%I #41 Oct 24 2024 23:52:28
%S 1,0,1,0,0,0,0,0,0,2,0,8,12,0,72,0,0,0,0,0,0,185328,0,4736520,
%T 21617456,0,912370744,0,0,0,0,0,0,3688972842502560,0,
%U 717591590174000896,9771553571471569856,0,3177501183165726091520,0,0,0,0,0,0
%N Number of tribone tilings of an n-triangle.
%C This sequence was requested to be added by the author of the link Code Golf challenge. It is based on the work of J. H. Conway, who proved that n = 12k + 0,2,9,11 if and only if T(n) can be tiled (i.e., exactly covered without overlapping) by tribones.
%H Code Golf Challenge, <a href="https://codegolf.stackexchange.com/q/204669/78850">Number of Distinct Tribone Tilings</a>, posted by CGCC user Bubbler.
%H J. H. Conway and J. C. Lagarias, <a href="http://dx.doi.org/10.1016/0097-3165(90)90057-4">Tiling with Polyominoes and Combinatorial Group Theory</a>, Journal of Combinatorial Theory, Series A 53 (1990), 183-208.
%H James Propp, <a href="https://arxiv.org/abs/2206.06472">Trimer covers in the triangular grid: twenty mostly open problems</a>, arXiv:2206.06472 [math.CO], 2022.
%o (Python) # tribone tilings
%o def h(coords):
%o def anyhex(i, j):
%o c = [x in coords for x in [(i-1, j), (i, j+1), (i+1, j+1), (i+1, j), (i, j-1), (i-1, j-1)]]
%o return any(map(lambda x, y: x and y, c, c[1:] + c[:1]))
%o return all(anyhex(*z) for z in coords)
%o def g(coords):
%o if not coords: return 1
%o #if not h(coords): return 0
%o i, j = min(coords)
%o if (i+1, j+1) not in coords: return 0
%o cases = 0
%o if (i+1, j) in coords: cases += g(coords - {(i, j), (i+1, j), (i+1, j+1)})
%o if (i, j+1) in coords: cases += g(coords - {(i, j), (i, j+1), (i+1, j+1)})
%o return cases
%o def f(n):
%o coords = {(i, j) for i in range(n) for j in range(i+1)}
%o #if n%12 not in [0, 2, 9, 11]: return 0
%o print(n, g(coords) if n%12 in [0, 2, 9, 11] else 0)
%o [f(x) for x in range(21)]
%Y The sequence of nonzero indices is A072065.
%Y Cf. A155219.
%K nonn,hard
%O 0,10
%A _Jonathan Oswald_, May 13 2020
%E Name clarified by _James Propp_, Mar 28 2022