/* Le Monde puzzle 954 in Picat. http://www.r-bloggers.com/le-monde-puzzle-954/ """ Given a triplet (a,b,c) of integers, with a go. go ?=> N = 1000, A :: 0..N, B :: 0..N, C :: 0..N, A #< B, B #< C, AB #= A+B, AC #= A+C, BC #= B+C, ABC #= A+B+C, perfect_square(AB,_ABsq), perfect_square(AC,ACsq), perfect_square(BC,BCsq), perfect_square(ABC,ABCsq), Z #= abs(1000-ABC), ACsq + 1 #= BCsq, BCsq + 1 #= ABCsq, Vars = [A,B,C,ACsq,BCsq,ABCsq], solve($[min(Z),ff,split],Vars), println([A,B,C]), println([ACsq,BCsq,ABCsq]), println(z=Z), nl, fail, nl. go => true. perfect_square(X,V) => V :: 0..X.fd_max()+1, V*V #= X.