/* Solving a legendary puzzle in Picat. From MindYourDecisions Solving a legendary puzzle """ A B * C ----- D E + F G ----- H I """ As a one-liner: Picat> X=[A,B,C,D,E,F,G,H,I],X::1..9,all_different(X),(10*A+B)*C#=D*10+E,D*10+E+(10*F+G)#=10*H+I,solve(X) X = [1,7,4,6,8,2,5,9,3] A = 1 B = 7 C = 4 D = 6 E = 8 F = 2 G = 5 H = 9 I = 3 ?; no This program was created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ import util. import cp. main => go. % CP: 0.001s (system time 0.03s) go ?=> X=[A,B,C,D,E,F,G,H,I], X::1..9, all_different(X), (10*A+B)*C#=D*10+E, D*10+E+10*F+G #= 10*H+I, solve(X), println(X), fail, nl. go => true. % Using permutation: 0.074 (system time: 0.133s) go2 ?=> garbage_collect(300_000_000), foreach([A,B,C,D,E,F,G,H,I] in permutations(1..9)) if (10*A+B)*C == D*10+E, D*10+E+(10*F+G)==10*H+I then println([A,B,C,D,E,F,G,H,I]) end end, nl. go2 => true.