|
MAPLE
|
s:= proc(n, i) option remember; `if`(i=0, [[]],
map(x-> seq([j, x[]], j=1..n), s(n, i-1)))
end:
a:= proc(n) local l; l:= s(n$2);
add(add(`if`([seq(evalb(f[g[f[i]]]=g[f[f[i]]]),
i=1..n)]=[true$n], 1, 0), g=l), f=l)
end:
seq(a(n), n=0..5); # Alois P. Heinz, Jul 16 2014
|