知識をつなぐオンライン百科事典
Kanapedia > ゲームの必勝法 > ニムと二進数の必勝法

ニムと二進数の必勝法

Kanapedia ゲームの必勝法カテゴリ · 2026-11-03

複数の山から、毎手一つの山だけを選んで1個以上の石を取ります。最後の石を取った側が勝つ通常のニムでは、各山の個数を排他的論理和で合わせた「ニム和」が0かどうかで、すべての局面の勝敗を判定できます。

最善手を確かめながら対戦

条件を選んで対局を開始し、必要なときに最善手のヒントを表示できます。

3、4、5個の山を二進数011、100、101と並べ、XORが010であると示す。3個の山を1個にすると001、100、101となりXORが000になる。
ニム:二進数の各桁をそろえる各桁で1が奇数個なら1、偶数個なら0にするのが排他的論理和XORです。通常形ニムでは、非終局でXORが0の局面を受け取った側は、完全な相手に対して必敗です。3・4・5から1・4・5へ移す手はこの条件を相手へ渡します。図を拡大参考:MIT:Theory of Impartial Games

山の合計では勝敗が分からない

一手で二つの山から取ることはできません。一つの山からなら、1個でも全部でも取れます。例えば2個と2個の二山では、先手が片方を減らしたら後手がもう片方を同じ数にできます。しかし1個と3個なら、先手が3個の山から2個取って1個ずつにできます。合計はどちらも4個ですが、手番側の勝敗は反対です。各山への分かれ方を記録する必要があります。

ニム和は桁上がりしない足し算

二進数の各桁で、1が奇数個なら1、偶数個なら0とします。これがXORで、記号は⊕です。例えば3⊕5⊕7は、011、101、111を桁ごとに合わせて001、すなわち1になります。同じ数はx⊕x=0となり、0とのXORは元の数です。普通の足し算と混同しないよう、計算の途中で二進表記を並べると確かめやすくなります。

0を相手に渡す手を探す

ニム和sが0でなければ、ある山の個数hをh⊕sへ減らせます。ただしh⊕sがhより小さい山を選びます。3、5、7ならs=1で、3の山を2へ減らすと2⊕5⊕7=0になります。5を4、7を6へ減らす手も勝ちを保ちます。必勝手が一つとは限らないため、見本と違う手でもニム和が0なら同じ目的を達成しています。

なぜ必ず0へ戻せるのか

sの最上位の1に注目します。その桁が1の山を選ぶと、h⊕sはその桁が0になり、より上の桁は変わらないためhより小さくなります。よって実際に石を取り除いて実現できます。一方、ニム和0の局面で一山をhからkへ変えると、新しい和はh⊕kで0にはなりません。この二つの性質により、0を渡す側が最後の石を取るまで応答を続けられます。

使える条件を確かめる

最初のニム和が0なら、先手は必ず0を崩すため、相手が正しく戻せば負けます。最後の石を取ると負けるミゼールでは終盤の扱いが変わります。また、1、3、4個だけ取れる制限付きの山では、個数そのものをXORしてはいけません。その場合は各山のグランディ数を求めます。XORという計算だけでなく、何をXORする規則なのかが重要です。

確認問題

通常のニムで山が4、6、9個です。どの山をいくつに減らせばニム和0になりますか。

解答と考え方を見る

4⊕6⊕9=11です。9⊕11=2なので、9個の山を2個に減らします。残った4⊕6⊕2は0です。7個取る操作は一山からの合法手であり、その後も0へ戻す戦略を続けられます。

参考資料・次に読む資料

資料確認日:2026-11-03。