プログラム説明 グローバル変数 wx, wy はマスのサイズ、wz=wx*wy です。nsolve は見つけた解の個数をカウントします。 関数 ztst(z,i) は、盤面を表す変数 z について、i 番目のマスが白なら non0 を返します。 関数 zinv(z,i) は、z の i番目のマスを反転した状態の盤面を返します。 マスは左上から右、上から下へ 0,1,2,... と番号が振ってあります。 盤の状態は整数で表します。マス0が白なら 1, マス1が白なら 2, マス2が白なら 4, ... の合計で表します。 例えば 白赤赤白という盤面は 1+0+0+8 = 9 と表現されます。