OFFSET
1,2
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.
LINKS
David Goodger, Polycubes: Puzzles & Solutions
FORMULA
The number n_{i,j,h,v} of pyramids of volume v, height h and such that the highest plateau has volume i * j is given by the recurrence: n_{i,j,h,v} = Sum_{a=0..(i*j*h-v)/((h-1)*j)} Sum_{b=0..(j*(h*(i+a)-a)-v)/((i+a)*(k-1))} (a+1)*(b+1)*n_{i+a,j+a,h-1,v-i*j}.
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;
[1, seq(countPyr(ii), ii=1..200)];
CROSSREFS
KEYWORD
nonn,tabl
AUTHOR
Matthieu Deneufchâtel, Oct 09 2013
STATUS
approved