Nim の必勝局面の計算方法

それぞれの山の石の数が$A_i,\ldots, A_N$ であるとする。

P局面(必敗局面)であるための必要十分条件は $\bigoplus_{i=1}^N A_i = 0$ である。

(つまり、各 $A_i$ を2進数で表して、桁ごとの 1 の数が偶数個であるということである)

証明は Sprague Grundy Theorem とだいたい同じことをする

なぜ B 進数を考える?

$B$ 進数は石を減らすという操作(順序的な概念)を扱いやすい

例えば、2進数で 11010 から 10001 にする(小さくする)という操作は以下のように扱える

11010
10001
 ↑ ここを0にする (値が異なる最左の桁を0にする)
 
11010
10001
  ===
  ↑ここの部分を好きに変更する

これは3進数などの一般の進数であっても言える。

特に桁ごとに演算を定義することで代数的な構造を入れることができる

(参考: Nimber

なぜ2進数を考える?

0 と 1 で表せるのが嬉しいから(カウントができる)

$x_i \in \{0, 1\}$ であれば、$\sum_{i=1}^N x_i = 1$ や $\sum_{i=1}^N x_i \bmod M = 1$ であれば、ある $i$ で $x_i=1$ が言える。

Nim では使わないが、一般に $\sum_{i=1}^N x_i = c$ や $\sum_{i=1}^N x_i \bmod M = c$ であれば、少なくても $c$ 個の $i$ で $x_i=1$ であることも言える。(NimK で使う)