pec-0.2.3: test_cases/euler/Euler9.pec
module Euler9
imports
Prelude
where
main :: () -> I32
main () = do
pc = new (1 :: W32)
pa = new 1
g = new True
while ((@pc < 1000) && @g)
(do
pa <- 1
while ((@pa < @pc) && @g)
(do
g <- foo @pa @pc
inc pa
)
inc pc
)
a = @pa - 1
c = @pc - 1
b = ((1000 - a) - c)
// putW a
// putS " "
// putW b
// putS " "
// putW c
assert ((a < b) && (b < c))
assert (((a*a) + (b*b)) == (c*c))
assert (((a + b) + c) == 1000)
v = (a*b)*c
putW v
assert (v == 31875000)
0
foo a c => ((500000 + ((a*a) + (a * c))) - ((a * 1000) + (c * 1000))) != 0