OFFSET
1,1
COMMENTS
A pyramid polycube is obtained by gluing together horizontal plateaux (parallelepipeds of height 1) in such a way that (0,0,0) belongs to the first plateau and each cell with coordinate (0,b,c) belonging to the first plateau is such that b , c >= 0. If the cell with coordinates (a,b,c) belongs to the (a+1)-st plateau (a>0), then the cell with coordinates (a-1, b, c) belongs to the a-th plateau.
A quasi-pyramid polycube is an object obtained from a pyramid by removing all the cells with coordinates (a,b,c) with 1 <= a <= h for a fixed pair (b,c) chosen among the triples (h,b,c) such that there is a cell with coordinates (h,b,c) in the pyramid ((h,b,c) belongs to the highest plateau of the pyramid).
If Q(x) denotes the generating function of the quasi-pyramids and P(x,h) the generating function of the pyramids counted by height, then the x^(-h) P(x,h) converges when h goes to infinity and the limit is Q(x) + x/(1-x).
MAPLE
calcPyr:=proc(i, j, k, l) option remember;
if (l<0) then 0
elif (i*j*k>l) then 0
elif k=1 then if (i*j=l) then 1 else 0; fi;
else s:=0; a:=0; b:=0;
while ((i+a)*j*(k-1)<=l-i*j) do
b:=0;
while ((i+a)*(j+b)*(k-1)<=l-i*j) do
s:=s+(a+1)*(b+1)*calcPyr(i+a, j+b, k-1, l-i*j);
b:=b+1;
od;
a:=a+1;
od;
s;
fi;
end;
countPyr:=proc(l)
s:=0;
for k to l do
i:=1:
while (i*k<=l) do
j:=1;
while (i*k*j<=l) do
s:=s+t^k*calcRecPyr(i, j, k, l);
j:=j+1;
od:
i:=i+1;
od;
od;
s;
end;
enum=[seq(countPyr(ii), ii=1..200)];
serie_quasiPyr:=proc(l) global enum; local ii;
map(coeff, enump, t^l);
select(x->x>0, %);
sum(t^(ii-1)*%[ii], ii=1..nops(%));
end;
serie_quasiPyr(100):
[1, seq(coeff(%, t^ii)-1, ii=1..50)];
CROSSREFS
KEYWORD
nonn
AUTHOR
Matthieu Deneufchâtel, Oct 10 2013
STATUS
approved