OFFSET
0,3
COMMENTS
The values are calculated recursively, based on the characterization by 2009. The number a(5) was found before (2001 and, independently, later works) by exhaustive computer-aided classification of the objects.
LINKS
T. Ito, Creation Method of Table, Creation Apparatus, Creation Program and Program Storage Medium, U.S. Patent US7228311B2 and Patent application 20040243621, Dec. 2, 2004.
D. S. Krotov, V. N. Potapov, On the reconstruction of N-quasigroups of order 4 and the upper bounds on their numbers, Proc. Conference devoted to the 90th anniversary of Alexei A. Lyapunov (Novosibirsk, Russia, October 8-11, 2001), 2001.
D. S. Krotov, V. N. Potapov, n-Ary Quasigroups of Order 4, SIAM J. Discrete Math. 23:2 (2009), 561-570, arXiv: math/0701519.
B. D. McKay, I. M. Wanless, A census of small latin hypercubes, SIAM J. Discrete Math. 22:2 (2008) 719-736.
V. N. Potapov, D. S. Krotov, On the number of n-ary quasigroups of finite order, Discrete Mathematics and Applications, 21:5-6 (2011), 575-586, arXiv:0912.5453.
FORMULA
a(n) = A211215(n)/(4*6^n).
PROG
(Python 2)
N=12 # the maximum arity to calculate
J, K=[[[[]]]], [[[[]]]]
for n in range(1, N+1):
J+=[[[]]] # create empty J[n][0]
K+=[[[]]] # create empty K[n][0]
for i in range(1, n):
J[n]+=[[]] # create empty J[n][i]
K[n]+=[[]] # create empty K[n][i]
if (i<=n-i):
J[n][i] += J[n-i][i][:]
K[n][i] += map(lambda K_: [K_[0]+1]+K_[1:], K[n-i][i])
for j in range(i+1, n-i+1):
J[n][i] += map(lambda J_: [i]+J_, J[n-i][j])
K[n][i] += map(lambda K_: [1]+K_, K[n-i][j])
J[n]+=[[[n]]] # create J[n][n]
K[n]+=[[[1]]] # create K[n][n]
J = map(lambda Ji:sum(Ji, []), J); K = map(lambda Ji:sum(Ji, []), K) # merge groups
# now J[n] and K[n] represent a list of partitions of n into positive summands:
# n=J[n][i][0]*K[n][i][0]+J[n][i][1]*K[n][i][1]+J[n][i][2]*K[n][i][2]+...
# 0<J[n][i][0]<J[n][i][1]<J[n][i][2]<... -- summands; K[n][i][j]>0 -- multiplicities
map(lambda Ji:Ji.pop(), J); map(lambda Ki:Ki.pop(), K) # remove the trivial 1-partitions
#
import math
F=map(lambda J1, K1, n:map(lambda J2, K2: reduce(lambda res, JK: res/JK, map(lambda J3, K3:math.factorial(K3)*math.factorial(J3)**K3, J2, K2), math.factorial(n)), J1, K1), J, K, range(N+1))
# F[n][i] is the number of partitions of an n-set that correspond to the partition J[n][i], K[n][i] of n.
La=map(lambda n:2L**(2**n-n-1), range(N+1))
Ras, Ra0, R_0, R_s, P_a, V, T = [0, 0L], [0, 0L], [0, 0L], [0, 0L], [0, 0L], [1, 1L], [4, 24L]
for n in range(2, N+1):
V+=[0L]; T+=[0L]; P_a+=[0L]; Ras+=[0L]; Ra0+=[0L]; R_0+=[0L]; R_s+=[0L]
for i in range(len(K[n])):
R_0[n], Ra0[n], R_s[n], Ras[n] = map(lambda A, B, C :
A[n] + reduce(lambda r, t:r*(B[J[n][i][t]]-C*A[J[n][i][t]])**K[n][i][t], range(len(K[n][i])), ((1-C)*P_a[sum(K[n][i])]+C)*F[n][i]),
(R_0, Ra0, R_s, Ras), (V, La, V, La), (0, 0, 1, 1))
R_0[n] *= 3
P_a[n] = La[n] - Ra0[n] - 2*Ras[n]
V[n] = 3*P_a[n] + R_0[n] + 4*R_s[n]
T[n] = 4*(6**n)*V[n]
print "\n Reduced (A211214):", V
print "\n Total (A211215):", T
CROSSREFS
KEYWORD
nonn
AUTHOR
Denis S. Krotov and Vladimir N. Potapov, Apr 06 2012
STATUS
approved