数学的に完全に厳密に解析できるゲーム

このエントリーをはてなブックマークに追加
148132人目の素数さん
>>135 >>145
それの必勝法と、なぜそうすれば勝てるのかについては↓に書いてあった。
http://science.2ch.net/test/read.cgi/math/1045545453/21-23
しかし、今は見れない。

要は、列の数を二進数で表示して、桁ごとに XOR を取り、それを 0 に保つってものだった。
XOR ってのは XOR(1,1)=0, XOR(1,0)=1, XOR(0,1)=1, XOR(0,0)=0 ってやつ。
これをn変数の場合に拡張して、
XOR(a1,a2,...,a_n) = XOR(a1,XOR(a2,XOR(a3,XOR(...))))
= {0 (変数に1が偶数個のとき), 1 (変数に1が奇数個のとき)} とする。
んで、これを数の場合に拡張する。二進数で表示して桁ごとに XOR をとる。
例えば、XOR(3,4,5,6) = XOR(11,100,101,110) = 100 = 4 となる。

んで、XOR(a1,a2,...,a_n) = 0 のとき、任意の k と任意の b (> 0) に対して
XOR(a1,...,a_k - b,...,a_n) は 0 にはならない。
逆に、XOR(a1,a2,...,a_n) が 0 でないときは、
XOR(a1,...,a_k - b,...,a_n) = 0 となる k と b が存在する。
証明は略。ってか、自分でちょっとやってみれば分かる。

というわけで、一度自分が取った後 XOR を 0 にできれば、
以後もずっと 0 になるようにできる。
そういうふうにできれば、2つ以上残ってるのが1列だけという状況で、
必ず自分の取り番となる。
相手の取り番では XOR は常に 0 なので、相手の取り番ではありえない。
んで、その状況で1つだけ残ってる列が奇数個なら、2つ以上残ってる列から全て取り、
偶数個なら、2つ以上残ってる列から1つ残るように取る。
つまり、1つ残ってる列を奇数個にできる。勝ち。