OFFSET
1,1
COMMENTS
The board is formed by identifying opposite edges of a 60°/120° rhombus, tiled by equilateral triangles with n triangles along each edge.
A rook move on the equilateral triangle tessellation is a move along a path through successively edge-adjacent faces, that turns alternately left and right at each face (starting with either left or right), so that the overall direction of movement remains approximately parallel to one set of triangle edges.
Also counts the number of 3 X n matrices such that each row is a permutation of {1, ..., n}, the first row is the identity permutation (1 .. n), and each column sums to either 0 or 1 (mod n).
When n = 2k+1, the rooks must be either all on white spaces or all on black spaces (using the obvious parity coloring) and the problem is equivalent to A006717(k) for each case. When n = 2k, there are k rooks on white spaces and k rooks on black spaces.
FORMULA
a(2k+1) = 2 * A006717(k).
EXAMPLE
For n = 4, the a(4) = 48 arrangements are generated from one solution by symmetries of the toroidal grid:
o---o---o---o---o
/ \ /X\ / \ / \ /
o---o---o---o---o
/ \X/ \ / \ / \ /
o---o---o---o---o
/ \ / \ / \ / \X/
o---o---o---o---o
/ \ / \ /X\ / \ /
o---o---o---o---o
PROG
(MiniZinc)
% minizinc -D 'N=6' -s --all-solutions a.mzn
include "globals.mzn";
include "alldifferent.mzn";
int: N;
array[1..N] of var 1..N: perm1;
array[1..N] of var 1..N: perm2;
constraint alldifferent(perm1);
constraint alldifferent(perm2);
constraint forall(i in 1..N)(perm1[i] + perm2[i] + i in {N, N+1, 2*N, 2*N+1, 3*N});
solve satisfy;
output [show(i) ++ " " | i in 1..N];
output [show(perm1[i]) ++ " " | i in 1..N];
output [show(perm2[i]) ++ " " | i in 1..N];
CROSSREFS
KEYWORD
nonn,more
AUTHOR
Hugh Robinson, Nov 04 2024
STATUS
approved