あなたの目標は、6つ以下の動きで首謀者のパズルを解決するプログラムを書くことです。
バックグラウンド
首謀者はボードゲームです。ゲームの目標は、他のプレイヤーが隠している4色のペグの組み合わせ(色と順序)を正確に推測することです。推測が行われると、他のプレーヤーは0〜4個の白または赤のペグで応答します。赤いペグは、色と場所が正しい場所です。白いペグは、残りの部分で色が表されている場所ですが、間違った場所にあります。推測に重複する色がある場合、秘密の対応する色ごとに1つのペグしか付与されません。(つまり、シークレットに1つのブルーが含まれていて、推測に2つのブルーがあり、1つが正しい場所にある場合、1つの赤いペグが与えられます)。6つの異なる色があり、複製を使用できます。
したがって、たとえば、ゲームは次のようになります(ソリューションがRed Green Green Blueであると想定)
1: Blue Purple Black Green - 2 white pegs
2: Green Red Black Blue - 2 white pegs, 1 red peg
3: Green Green Green Blue - 3 red pegs
4: Red Green Green Blue - 4 red pegs
ルールはウィキペディアで拡張されています
必要条件
- プログラムはstdinから読み取り、stdoutに書き込む必要があります
- 色の代わりに簡単にするために数字を使用します。推測する組み合わせは、1〜6の4つの数字になります。
推測は、改行で終わる1〜6の一連の4つのスペースで区切られた数値として出力する必要があります。例えば:
1 5 2 2 \ n
プログラムは、スペースで区切られ、改行で終わる0〜4の2つの整数を推測した後、入力として受信します。1つ目は白いペグの量、2つ目は赤いペグの量です。
- 「0 4」(4つの赤いペグ)の入力で、プログラムは終了する必要があります
- プログラムは、6ターン未満でパズルを解くことができなければなりません(プログラムが出力し、応答入力が1ターン続く)。それをより少なく解決できることに対する(証明の複雑さによる)ボーナスはありません。
- ソリューションは完全に内部にあり、ソースに含まれている必要があります。標準ライブラリのみが許可されています。したがって、ソリューションは他のファイル(辞書など)やインターネットに依存しない場合があります。
入出力の例
> is your programs output
< is the responding input
Solution is 1 5 6 6
> 1 2 3 4
< 0 1
> 4 1 6 6
< 1 2
> 1 6 5 6
< 2 2
> 1 5 6 6
< 0 4
得点
- これは純粋でシンプルなコードゴルフです。バイト単位の最短ソリューションが勝ちです。
これは私の最初のCode Golfの質問です。何か間違ったことをしてしまった場合はおologiesび申し上げますが、曖昧さが絶対にないようにし、可能な限り多くのルール弁護士を防ぐように、できる限り努力しました。曖昧または不明瞭な場合は、お気軽に質問してください。
1 2 3 4
返されません0 1
か?