#!/usr/bin/env setl
--
-- Project Euler problem 6 in SETL
--
-- Problem 6
-- The sum of the squares of the first ten natural numbers is,
-- 1^(2) + 2^(2) + ... + 10^(2) = 385
--
-- The square of the sum of the first ten natural numbers is,
-- (1 + 2 + ... + 10)^(2) = 55^(2) = 3025
--
-- Hence the difference between the sum of the squares of the first ten
-- natural numbers and the square of the sum is 3025 − 385 = 2640.
--
-- Find the difference between the sum of the squares of the first one
-- hundred natural numbers and the square of the sum.
--
problem6();
proc problem6;
nprint("Problem 6: ");
n := 100;
p := { [i,i**2] : i in [1..n]};
diff := abs(+/range(p) - (+/domain(p))**2);
print(diff);
end proc;
-- a more direct version
proc problem6b;
nprint("Problem 6: ");
n := 100;
sum_of_squares := +/[i**2 : i in [1..n]];
square_of_sum := (+/[i : i in [1..n]])**2;
diff := abs(sum_of_squares - square_of_sum);
print(diff);
end proc;