OFFSET
0,5
COMMENTS
The definition of an orbital system is given in A232500.
The Catalan decomposition of an orbital w is a list of orbitals which are alternately entirely above or below the main circle ('above' and 'below' in the weak sense) such that their concatenation equals w. If a zero is on the border of two orbitals then it is allocated to the first one. By convention T(0,0) = 1.
The number of orbitals over n sectors is counted by the swinging factorial A056040.
LINKS
Peter Luschny, Orbitals
FORMULA
EXAMPLE
Table starts:
[ n] [k=0,1,2,...] [row sum]
[ 0] [1] 1
[ 1] [0, 1] 1
[ 2] [0, 2] 2
[ 3] [0, 6] 6
[ 4] [0, 4, 2] 6
[ 5] [0, 20, 10] 30
[ 6] [0, 10, 8, 2] 20
[ 7] [0, 70, 56, 14] 140
[ 8] [0, 28, 28, 12, 2] 70
[ 9] [0, 252, 252, 108, 18] 630
[10] [0, 84, 96, 54, 16, 2] 252
[11] [0, 924, 1056, 594, 176, 22] 2772
[12] [0, 264, 330, 220, 88, 20, 2] 924
For example T(2*n, n) = 2 counts the Catalan decompositions
[[-1, 1], [1, -1], [-1, 1], ..., [(-1)^n, (-1)^(n+1)]] and
[[1, -1], [-1, 1], [1, -1], ..., [(-1)^(n+1), (-1)^n]].
PROG
(Sage) # uses[unit_orbitals from A274709]
# Brute force counting
from itertools import accumulate
def catalan_factors(P):
def bisect(orb):
i = 1
A = list(accumulate(orb))
if orb[1] > 0 if orb[0] == 0 else orb[0] > 0:
while i < len(A) and A[i] >= 0: i += 1
else:
while i < len(A) and A[i] <= 0: i += 1
return i
R = []
while P:
i = bisect(P)
R.append(P[:i])
P = P[i:]
return R
def orbital_factors(n):
if n == 0: return [1]
if n == 1: return [0, 1]
S = [0]*(n//2 + 1)
for o in unit_orbitals(n):
S[len(catalan_factors(o))] += 1
return S
for n in (0..9): print(orbital_factors(n))
CROSSREFS
KEYWORD
nonn,tabf
AUTHOR
Peter Luschny, Aug 15 2016
STATUS
approved