Tips turingmachine
秘密コードは、必ず全ての検証機の判断基準を使用します。この前提から多くの情報を得ることができるでしょう。例を挙げると、
A) 青の数字が奇数か偶数か
B) 青の数字が1より大きいかどうか
C) 組み合わせに含まれる 4 の数
D) 青の数字が4より小さいかどうか
という4つの検証機から答えを探る場合、まず答えが「444」だと仮定すると、検証機A、B、Dの判断基準を使用せずとも答えが導けてしまい、それはありえないことなので、「444」ではありません。
そして、黄と紫についての検証機が少ないことが分かるでしょうか。もし答えが123であれば、検証機は133というコードの違いを見分けることはできないでしょう。 黄と紫のコードの違いを見分けられるのは検証機Cだけです。つまり、黄と紫の秘密コードが4でない限り、全ての検証機を通しても黄と紫のコードが秘密コードかどうか見分けられないのです。 したがって、逆説的に黄と紫は4であると推論できます。
さらに、もし青が1と等しいなら、検証機BとCの組み合わせだけで144が秘密コードだと示すのに十分です。 検証機A、Dの判断基準を使用せずとも答えが導けてしまうので、青は1に等しくありません。
また、青が4か5であったなら、検証機Dに通すだけで検証機Bを使用せずとも答えが導けてしまいます。 別の言い方をすれば、検証機AとCとDだけで444か544かを見分けるのに十分なので、検証機Bの判断基準を使用せずとも答えが導けてしまいます。 だから青は4でも5でもありません。
よって、可能な組み合わせは残り2つ、244と344ということになります。 しかし244を秘密コードだと仮定して、検証機AとCとDで検証してみると、4が2つ、青が4より小さく、青が偶数...。 つまり、検証機Bの判断基準を使わなくてもすでに244なのです。ということは、検証機Bの判断基準を使わなくても答えが導けてしまう244は秘密コードではありません。
だから、上記の例の場合は0チェックで答えである秘密コードの344を導けるのです。
また、秘密コードを導く上で検証機が全て必要なのか検証することもできます。
- 各検証機の正しい判断基準(青が奇数、青が1より大きい、4が2つ、青が4より小さい)では、秘密コードの可能性は1つ:青は強制的に3になり,したがって黄と紫は強制的に4になります。
- 検証機Aを外すと、2つの解がある: 244 & 344
- 検証機Bを外すと、2つの解がある: 144 & 344
- 検証機Cを外すと、2つ以上の解(25)がある: 例 325 & 314
- 検証機Dを外すと、2つの解がある: 344 & 544
つまり、どの検証機も秘密コードの解明に有用であり、最後の可能性は1つしかありません。 上記の理由付けがなければ、それは有効な解であることを意味するだけで、唯一の解であることを意味しません。