%I #27 May 17 2022 13:23:46
%S 1,1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,0,1,1,0,1,1,0,1,2,1,0,1,1,1,2,3,3,2,
%T 1,1,1,0,2,4,3,4,2,0,1,1,0,3,8,8,8,8,3,0,1,1,1,4,13,21,28,21,13,4,1,1,
%U 1,0,5,19,31,65,65,31,19,5,0,1,1,0,7,35,70,170,267,170,70,35,7,0,1
%N Number A(n,k) of tilings of a k X n rectangle using straight (3 X 1) trominoes and 2 X 2 tiles; square array A(n,k), n>=0, k>=0, read by antidiagonals.
%H Alois P. Heinz, <a href="/A219967/b219967.txt">Antidiagonals n = 0..27, flattened</a>
%H Wikipedia, <a href="https://en.wikipedia.org/wiki/Tromino">Tromino</a>
%e A(4,4) = 3, because there are 3 tilings of a 4 X 4 rectangle using straight (3 X 1) trominoes and 2 X 2 tiles:
%e ._._____. ._____._. ._._._._.
%e | |_____| |_____| | | . | . |
%e | | . | | | | . | | |___|___|
%e |_|___| | | |___|_| | . | . |
%e |_____|_| |_|_____| |___|___| .
%e Square array A(n,k) begins:
%e 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
%e 1, 0, 0, 1, 0, 0, 1, 0, 0, ...
%e 1, 0, 1, 1, 1, 2, 2, 3, 4, ...
%e 1, 1, 1, 2, 3, 4, 8, 13, 19, ...
%e 1, 0, 1, 3, 3, 8, 21, 31, 70, ...
%e 1, 0, 2, 4, 8, 28, 65, 170, 456, ...
%e 1, 1, 2, 8, 21, 65, 267, 804, 2530, ...
%e 1, 0, 3, 13, 31, 170, 804, 2744, 12343, ...
%e 1, 0, 4, 19, 70, 456, 2530, 12343, 66653, ...
%p b:= proc(n, l) option remember; local k, t;
%p if max(l[])>n then 0 elif n=0 or l=[] then 1
%p elif min(l[])>0 then t:=min(l[]); b(n-t, map(h->h-t, l))
%p else for k do if l[k]=0 then break fi od;
%p b(n, subsop(k=3, l))+
%p `if`(k<nops(l) and l[k+1]=0, b(n, subsop(k=2, k+1=2, l)), 0)+
%p `if`(k+1<nops(l) and l[k+1]=0 and l[k+2]=0,
%p b(n, subsop(k=1, k+1=1, k+2=1, l)), 0)
%p fi
%p end:
%p A:= (n, k)-> `if`(n>=k, b(n, [0$k]), b(k, [0$n])):
%p seq(seq(A(n, d-n), n=0..d), d=0..14);
%t b[n_, l_] := b[n, l] = Module[{ k, t}, If [Max[l] > n, 0, If[n == 0 || l == {}, 1, If[ Min[l] > 0 ,t = Min[l]; b[n-t, l-t], k = Position[l, 0, 1][[1, 1]]; b[n, ReplacePart[l, k -> 3]] + If[k < Length[l] && l[[k+1]] == 0, b[n, ReplacePart[l, {k -> 2, k+1 -> 2}]], 0] + If[k+1 < Length[l] && l[[k+1]] == 0 && l[[k+2]] == 0, b[n, ReplacePart[l, {k -> 1, k+1 -> 1, k+2 -> 1}]], 0] ] ] ] ]; a[n_, k_] := If[n >= k, b[n, Array[0&, k]], b[k, Array[0&, n]]]; Table[Table[a[n, d-n], {n, 0, d}], {d, 0, 14}] // Flatten (* _Jean-François Alcover_, Dec 16 2013, translated from Maple *)
%Y Columns (or rows) k=0-10 give: A000012, A079978, A000931(n+3), A219968, A202536, A219969, A219970, A219971, A219972, A219973, A219974.
%Y Main diagonal gives: A219975.
%K nonn,tabl
%O 0,25
%A _Alois P. Heinz_, Dec 02 2012