|
MATHEMATICA
|
Walks6D[n_Integer, steps_List] := Walks6D[n, steps] =
Module[{vals = {{{{{1}}}}}, seq = {}, n0, n1},
Do[
vals = Table[
n0 = Ceiling[(nsum - n1 - n2 - n3 - n4)/2];
Join[
Table[0, {n0}],
Table[Total[Function[s,
pos = Reverse[Sort[{n1, n2, n3, n4, n5, nsum - n1 - n2 - n3 - n4 - n5} - s]];
If[Min[pos] < 0, 0, vals[[##]]& @@ Most[pos + 1]]] /@ steps],
{n5, n0, Min[n4, nsum - n1 - n2 - n3 - n4]}]
],
{n1, 0, Min[n, nsum]},
{n2, 0, Min[n1, nsum - n1]},
{n3, 0, Min[n2, nsum - n1 - n2]},
{n4, 0, Min[n3, nsum - n1 - n2 - n3]}];
If[IntegerQ[n1 = nsum/6 + 1], AppendTo[seq, vals[[n1, n1, n1, n1, n1]]]],
{nsum, 2, 6 n, 2}];
Return[seq];
];
rows = Join[Permutations[{1, 1, 0, 0, 0, 0}], Permutations[{2, 0, 0, 0, 0, 0}]];
|