暴力求解只能到4
In[1]:= board = Table[0, {4}, {4}];
target1 = Table[Mod[i + j, 2], {i, 4}, {j, 4}];
target2 = Table[Mod[i + j + 1, 2], {i, 4}, {j, 4}];
chesses = Table[If[m == i || n == j, 1, 0], {i, 4}, {j, 4}, {m, 4}, {n, 4}];
digits[n_] := Flatten@Position[Reverse@IntegerDigits[n, 2], 1] - 1;
chess[n_] := Map[chesses[[Quotient[#, 4] + 1, Mod[#, 4] + 1]] &, digits[n]];
solution[k_] := Fold[MapThread[BitXor[#1, #2] &, {#1, #2}, 2] &, board, chess[k]];
display[n_] := Table[If[BitAnd[n, 2^(i*4 + j)] == 0, 0, 1], {i, 0, 3}, {j, 0, 3}];
display /@ Select[Range[2^16 - 1], ((# == target1 || # == target2) &)[solution[#]] &]
Out[9]= {{{0, 1, 0, 1}, {1, 0, 1, 0}, {0, 1, 0, 1}, {1, 0, 1, 0}}, {{1, 0, 1, 0}, {0, 1, 0, 1}, {1, 0, 1, 0}, {0, 1, 0, 1}}}
|