RosettaCodeData/Task/Paraffins/PARI-GP/paraffins-2.pari
2017-09-25 22:28:19 +02:00

19 lines
433 B
Text

iso(B,n,C,S,l=n) =
{
my (b,c,i,s);
for (b = 1, 4-B,
if ((s = S + b * n) < P,
c = R[n+1] * C * prod(i = 1, b-1, (R[n+1]+i)/(i+1));
if (l+l < s, U[s+1] += c);
if (B+b < 4, R[s+1] += c; i = n; while (i--, iso(B+b, i, c, s, l)))))
}
paraffin(p) =
{
local (P = p+1, R, U = R = Vec([1,1], P));
for (n = 1, p, iso(0, n, 1, 1);
if (n % 2,, U[n+1] += R[n/2+1] * (R[n/2+1]+1)/2);
print([n, U[n+1]]))
}