オリジナルの「Blue Eyes」パズルはここ(およびその下)にあります。
さまざまな目の色を持つ人々のグループが島に住んでいます。彼らはすべて完璧な論理学者です-結論が論理的に推測できる場合、彼らは即座にそれを行います。彼らの目の色は誰も知りません。毎晩深夜、フェリーが島に停車します。自分の目の色がわかった島民は島を去り、残りは残ります。誰もがいつでも他の人を見ることができ、それぞれの目の色(自分自身を除く)で見た人の数を数えますが、それ以外の方法では通信できません。島の誰もがこの段落のすべてのルールを知っています。
この島には、100の青い目をした人、100の茶色の目をした人、そしてグル(彼女はたまたま緑の目をしています)がいます。したがって、青い目をした人は100人が茶色の目で99人が青い目(および緑の目)を見ることができますが、それでも自分の目の色はわかりません。彼が知る限り、合計は101ブラウンと99ブルーである可能性があります。または100ブラウン、99ブルー、そして彼は赤い目を持っている可能性があります。
グルは、島での終わらない年のすべての日に、1日(正午に言ってみましょう)一度話すことが許可されています。島民の前に立って、彼女は次のように言います:
「青い目をした人が見えます。」
誰が島を出ますか、そして何夜ですか?
答えは、彼らがすべての百日のままにしておくことです。これは、次のロジックによるものです。
青い目の人が1人だけの場合、彼は1日目に出発します。2つの青い目の人だけがある場合、誰も1日目に出発しません。これに続いて、2人とも2日目に出発します。 -目の前の人、誰も1日目に出発しません。誰も2日目に出発しません。青い目をした人が3人いることを誰もが知っています。1人しかいなかった場合、彼は1日目に出発し、2人がいた場合、2人とも2日目に出発したため、3人全員が3日目に出発します。
これで、n個の青い目の人々が目の色を計算して去るのにn日を必要とする場合、n + 1の青い目の人々が同じことをするのにn + 1日を必要とするという帰納的証明を書くことができます。
ただし、作成するコードは、元のパズルだけでなく、わずかに異なる帰納的ステップを必要とするいくつかのバリアントも解決できる必要があります。
青い目をしている人の数とそうでない人の数がわかります。また、島の誰もが聞く神託(方程式/不等式のシステム)による声明が与えられます。青い目の人々が島から解放される時期を決定する必要があります。
オラクルの声明はb
、青い目の人の数と青い目のない人の数に使用しr
ます。方程式には、< > <= >= = + -
整数を含めることができます。
テストケース
このバリアントセットに基づく
50 50
b>=1
b<b+r
出力: 50
2番目の方程式は新しい情報を提供しないため、この問題は元のパズルとまったく同じになります。
100 50
b+3>=r+4
出力: 25
100 0
b-2>8+1-1
出力: 90
50 50
b>=10
b<=75
出力: 41
3b<2r
?
b+b+b < r+r
代わりに書くことができます。
b>10
、ないb>=10
ので、出力があるべき90
ではありません91
。