/* Pythagoras problem in Picat. Model created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ import cp. main => go. go => write_list(findall([A,B,C], $pythagoras([A,B,C], 100))). write_list(L) => foreach([A,B,C] in L) printf("%d^2 + %d^2 = %d^2\n", A,B,C) end. pythagoras(LD, Max) => LD = [A,B,C], LD :: 1..Max, A**2#=A2, B**2#=B2, C**2#=C2, A2+B2 #= C2, A #=< B, B #=< C, solve([],LD).