/*
Problem 12
"""
The sequence of triangle numbers is generated by adding the natural numbers.
So the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28.
The first ten terms would be:
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
Let us list the factors of the first seven triangle numbers:
1: 1
3: 1,3
6: 1,2,3,6
10: 1,2,5,10
15: 1,3,5,15
21: 1,3,7,21
28: 1,2,4,7,14,28
We can see that the 7th triangle number, 28, is the first triangle number to have
over five divisors.
Which is the first triangle number to have over five-hundred divisors?")
"""
This Pop-11 program was created by Hakan Kjellerstrand (hakank@bonetmail.com).
See also my Pop-11 / Poplog page: http://www.hakank.org/poplog/
*/
compile('/home/hakank/Poplib/init.p');
define sumlist(list) -> res;
applist(0, list, nonop + ) -> res;
enddefine;
define triangle_number(n);
lvars i;
sumlist([%for i from 1 to n do i endfor%])
enddefine;
define num_divisors2(n);
lvars s = 0;
lvars i;
for i from 1 to round(sqrt(n)) do
if n mod i = 0 then
s + 1 -> s;
endif;
endfor;
return(s);
enddefine;
define problem12();
lvars i = 2;
lvars len = 0;
lvars tnum;
while 2*len <= 500 do
triangle_number(i) -> tnum;
num_divisors2(tnum) -> len;
i + 1 -> i;
endwhile;
[^(i-1) ^(len*2) ^tnum] =>
enddefine;
'problem12()'=>
problem12();