関数 p(z) は盤面zを見やすく表示するための関数です。文字列を返すので ? p(z) のように使います。 関数 z_op_i(z, i) は、盤面 z に対してマスiをタッチした結果の盤面を返します。 関数 zzero() は全部赤の盤面を返します。 関数 mkdepend(depends[32]) は、全部赤の盤面に対し、マスi(i=0..n-1)をタッチした結果の盤面を depends[i] に返します。 4-1 で解の正当性を調べるとき、そのマスの状態確定しているかどうか調べなければなりません。 あるマスが確定しているのは、自分と周囲4マスが設定済みの場合です。 マスiが依存しているマスを1にしたパターンを depends[i] に設定します。 関数 mkorder は、マスをタッチする順番を決めます。高速化のためであって、本質的ではありません。