ひよりみっ!

ディープインパクトが三冠馬になった年からやってる日記

たぶんこれでいいはず

2019-10-16 21:35:31 | 雑記
しばらく考えてた論理パズルがこれ
ある部屋の中にある64マスのチェス盤に、ランダムにポーンを置き、その上で1から64までの数字をひとつ決めます。
その数字を、部屋に入ってきてチェス盤を見た幼女Aに教えます。
その上で、幼女Aはチェス盤の上にあるポーンをひとつ取り除くか、あるいはひとつ付け加えるかのどちらかひとつの行為を行えます。
何もしないということはできません。
その操作を行って幼女Aが室外に出たのち、ここまでのやりとりを一切知らない幼女Bが室内に呼ばれて、少女Aによって操作されたチェス盤をみて、幼女Aに伝えられた数字を当てることができるか、という問題ですね。
別に幼女である必要はありませんが、そこはリンク先に従っておきますw
幼女AとBは、ルールを知ったうえであらかじめ打ち合わせをしておくことは可能ですが、いざ幼女Aが部屋に入ったら、その後は一切コミュニケーションを取ることはできません。

というわけで、ここからは私の考えたこと。





おそらく、2進数でモノを考えるべきというのは早い段階で気付きました。
そのうえで「繰り上がりは考えない」のがポイントだなって。
というわけで、チェス盤に次のように番号を割り振ります。

000000 000001 000010 000011 000100 000101 000110 000111
001000 001001 001010 001011 001100 001101 001110 001111
010000 010001 010010 010011 010100 010101 010110 010111
011000 011001 011010 011011 011100 011101 011110 011111
100000 100001 100010 100011 100100 100101 100110 100111
101000 101001 101010 101011 101100 101101 101110 101111
110000 110001 110010 110011 110100 110101 110110 110111
111000 111001 111010 111011 111100 111101 111110 111111

2進法で、0から63を割り振ってます。
そして、ポーンが置かれたマスについて、各桁の1の数を数えます。
それが偶数だったらその桁に0を、奇数だったら1を置いた2進数を記録します。この作業を作業Aと呼ぶことにします。
幼女Aは、その数と教えられた数を比較し(ただし、64の場合は0とみなします)、同じになってる桁には0を、違う桁には1を置いた2進数を記録します。
そうして導かれた2進数と同じになってるマスにポーンがある場合は取り除き、ない場合にはポーンを置きます。
その状態のチェス盤を幼女Bに見せ、先ほどの作業Aと同じことをさせれば、幼女Aが教えられた数がわかるはずです。





一旦思いついたら、そんなに苦労はしなかったので、思いつく人はすぐにわかったんだろうなーと思いました。
厳密なところで合ってるかはわからないけど、考え方としては間違ってないと思うんだ……。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする