RosettaCodeData/Task/Partition-function-P/11l/partition-function-p.11l

28 lines
589 B
Text
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
F partitions(n)
V p = [BigInt(1)] [+] [BigInt(0)] * n
L(i) 1 .. n
V k = 0
L
k++
V j = (k * (3 * k - 1)) I/ 2
I j > i
L.break
I k [&] 1
p[i] += p[i - j]
E
p[i] -= p[i - j]
j = (k * (3 * k + 1)) I/ 2
I j > i
L.break
I k [&] 1
p[i] += p[i - j]
E
p[i] -= p[i - j]
R p[n]
print(Partitions: (0.<15).map(x -> partitions(x)))
V start = time:perf_counter()
print(partitions(6666))
print(time:perf_counter() - start)