/* Missing number in Picat. From Muhammad Zain Sarwar: "People With an IQ of 120+ Can Solve This Puzzle — Finding the Missing Number!" https://medium.com/puzzle-sphere/people-with-an-iq-of-120-can-solve-this-puzzle-finding-the-missing-number-8517d56dcc8e """ Find missing number 7 2 5 9 2 8 7 8 4 6 ? 9 """ A B D C Manual solution: B * C = A*10 + D -> D = B * C - A*10 9 * 8 = 7*10 + 2 = 72 7 * 4 = 2*10 + 8 = 28 6 * 9 = 5*10 + ? = 5*10 = 4 = 54 AllGood: [program = B * C - A * 10, res = 4, count = 723, rank = 16] [program = C * B - A * 10, res = 4, count = 626, rank = 16] [program = (B + 1) / (C - 3), res = 1.16666666666666674, count = 593, rank = 16] [program = B - C + (9 - C), res = -3, count = 467, rank = 14] [program = 9 - C + (B - C), res = -3, count = 444, rank = 14] [program = 9 - C - (C - B), res = -3, count = 342, rank = 14] [program = 8 + C - (A + A), res = 7, count = 91, rank = 14] [program = B * C - 10 * A, res = 4, count = 14, rank = 16] resultMap = [4 = 3,-3 = 3,7 = 1,1.16666666666666674 = 1] Including mod: For example 2 * (C mod 7), res = 4 C * B mod (1 + 9), res = 4 B * C mod (C + 6), res = 9 AllGood: [program = 2 * (C mod 7), res = 4, count = 680, rank = 13] [program = (1 + 1) * (C mod 7), res = 4, count = 599, rank = 18] [program = (8 - 6) * (C mod 7), res = 4, count = 533, rank = 18] [program = (5 - 3) * (C mod 7), res = 4, count = 443, rank = 18] [program = 1 * 2 * (C mod 7), res = 4, count = 437, rank = 19] [program = 2 mod 3 * (C mod 7), res = 4, count = 402, rank = 19] [program = (9 - 7) * (C mod 7), res = 4, count = 400, rank = 18] [program = C mod 7 * 2, res = 4, count = 386, rank = 13] [program = B * C - A * 10, res = 4, count = 341, rank = 16] [program = 2 mod 6 * (C mod 7), res = 4, count = 314, rank = 19] [program = 2 mod 9 * (C mod 7), res = 4, count = 268, rank = 19] [program = B * C mod 10, res = 4, count = 258, rank = 12] [program = C * B - A * 10, res = 4, count = 245, rank = 16] [program = C mod 7 + C mod 7, res = 4, count = 238, rank = 17] [program = A * C mod 9, res = 0, count = 221, rank = 12] [program = B * C mod (A * 10), res = 4, count = 189, rank = 17] [program = C * B mod 10, res = 4, count = 172, rank = 12] [program = C * A mod 9, res = 0, count = 167, rank = 12] [program = (10 - 8) * (C mod 7), res = 4, count = 155, rank = 18] [program = C mod 7 * (2 mod 3), res = 4, count = 152, rank = 19] [program = C mod 7 * (1 + 1), res = 4, count = 150, rank = 18] [program = (4 - 2) * (C mod 7), res = 4, count = 144, rank = 18] [program = 9 + B - C * 2, res = -3, count = 139, rank = 16] [program = B + 9 - C * 2, res = -3, count = 130, rank = 16] [program = C mod 7 * (8 - 6), res = 4, count = 120, rank = 18] [program = A * C mod (B + 9), res = 0, count = 116, rank = 16] [program = (6 - 4) * (C mod 7), res = 4, count = 116, rank = 18] [program = A * C mod (9 + 9), res = 9, count = 115, rank = 17] [program = A * C mod (9 * 6), res = 45, count = 97, rank = 18] [program = B * C mod (4 + 6), res = 4, count = 93, rank = 17] [program = C * B mod (4 + 6), res = 4, count = 84, rank = 17] [program = A mod 5 * (C mod 7), res = 0, count = 68, rank = 18] [program = A * C mod (9 + B), res = 0, count = 66, rank = 16] [program = 9 + B - 2 * C, res = -3, count = 63, rank = 16] [program = 1 + B mod 8, res = 7, count = 62, rank = 12] [program = 8 / 4 * (C mod 7), res = 4.00000000000000000, count = 51, rank = 19] [program = B + 9 - 2 * C, res = -3, count = 37, rank = 16] [program = B mod 8 + 1, res = 7, count = 27, rank = 12] [program = 2 mod 5 * (C mod 7), res = 4, count = 13, rank = 19] [program = (C - 6) * (A - 6), res = -3, count = 12, rank = 16] [program = C * B mod (A * 10), res = 4, count = 9, rank = 17] [program = C mod 7 * (9 - 7), res = 4, count = 9, rank = 18] [program = C mod 7 * (5 - 3), res = 4, count = 8, rank = 18] [program = C mod 7 * (4 - 2), res = 4, count = 8, rank = 18] [program = C mod 7 * (1 * 2), res = 4, count = 8, rank = 19] [program = C mod 7 * (2 mod 9), res = 4, count = 7, rank = 19] [program = (4 + C) mod 10, res = 3, count = 6, rank = 12] [program = C mod 7 * (2 mod 6), res = 4, count = 6, rank = 19] [program = 2 * C / (8 mod B), res = 9.00000000000000000, count = 5, rank = 18] [program = (C + 4) mod 10, res = 3, count = 4, rank = 12] [program = 9 + B - (C + C), res = -3, count = 4, rank = 14] [program = 10 mod C * (C mod 7), res = 2, count = 4, rank = 18] [program = (C - 6) mod 10, res = 3, count = 3, rank = 12] [program = C mod 7 * (10 - 8), res = 4, count = 3, rank = 18] [program = B * C mod (C + 6), res = 9, count = 2, rank = 16] [program = C mod 7 * (A mod 5), res = 0, count = 2, rank = 18] [program = C * B mod (6 + C), res = 9, count = 1, rank = 16] [program = C * B mod (1 + 9), res = 4, count = 1, rank = 17] [program = C * A mod (B + B), res = 9, count = 1, rank = 15] [program = C * A mod (B + 9), res = 0, count = 1, rank = 16] [program = C * A mod (9 + B), res = 0, count = 1, rank = 16] [program = C * A mod (9 * 6), res = 45, count = 1, rank = 18] [program = C * 2 mod (5 + B), res = 7, count = 1, rank = 17] [program = B * C mod (6 + C), res = 9, count = 1, rank = 16] [program = B * C mod (1 + 9), res = 4, count = 1, rank = 17] [program = B * C mod (5 * 2), res = 4, count = 1, rank = 18] [program = A * C mod (10 + C), res = 7, count = 1, rank = 16] [program = C + 8 - 2 * A, res = 7, count = 1, rank = 16] [program = C mod 7 * (2 mod C), res = 4, count = 1, rank = 18] [program = C mod 7 * (6 - 4), res = 4, count = 1, rank = 18] [program = 2 mod B * (C mod 7), res = 4, count = 1, rank = 18] [program = 2 mod 10 * (C mod 7), res = 4, count = 1, rank = 19] resultMap = [4 = 40,0 = 8,-3 = 6,9 = 5,7 = 5,3 = 3,45 = 2,9.00000000000000000 = 1,4.00000000000000000 = 1,2 = 1] AllGood: [program = 2 * (C mod 7), res = 4, count = 813, rank = 13] [program = (3 - 1) * (C mod 7), res = 4, count = 694, rank = 18] [program = 2 * 1 * (C mod 7), res = 4, count = 556, rank = 19] [program = (1 + 1) * (C mod 7), res = 4, count = 528, rank = 18] [program = C mod 7 * 2, res = 4, count = 521, rank = 13] [program = 10 / 5 * (C mod 7), res = 4.00000000000000000, count = 455, rank = 19] [program = (10 - 8) * (C mod 7), res = 4, count = 382, rank = 18] [program = (4 - 2) * (C mod 7), res = 4, count = 369, rank = 18] [program = 8 / 4 * (C mod 7), res = 4.00000000000000000, count = 363, rank = 19] [program = 2 mod B * (C mod 7), res = 4, count = 323, rank = 18] [program = 1 + B mod 8, res = 7, count = 302, rank = 12] [program = 2 mod 3 * (C mod 7), res = 4, count = 214, rank = 19] [program = 1 mod 3 + B mod 8, res = 7, count = 208, rank = 18] [program = 8 - 7 + B mod 8, res = 7, count = 199, rank = 17] [program = 5 - 4 + B mod 8, res = 7, count = 199, rank = 17] [program = 2 mod C * (C mod 7), res = 4, count = 183, rank = 18] [program = 1 mod A + B mod 8, res = 7, count = 165, rank = 17] [program = C mod 7 * (3 - 1), res = 4, count = 155, rank = 18] [program = C mod 7 * (2 * 1), res = 4, count = 142, rank = 19] [program = A * C mod 9, res = 0, count = 140, rank = 12] [program = (C - 6) mod 10, res = 3, count = 126, rank = 12] [program = B mod 8 + 1, res = 7, count = 118, rank = 12] [program = 5 mod 4 + B mod 8, res = 7, count = 109, rank = 18] [program = 1 mod 4 + B mod 8, res = 7, count = 101, rank = 18] [program = C mod 7 + C mod 7, res = 4, count = 87, rank = 17] [program = C mod 7 * (1 + 1), res = 4, count = 76, rank = 18] [program = C * B mod 10, res = 4, count = 72, rank = 12] [program = 1 mod C + B mod 8, res = 7, count = 71, rank = 17] [program = B mod 8 + 5 mod 4, res = 7, count = 50, rank = 18] [program = C * B mod (A * 5), res = 4, count = 38, rank = 17] [program = 1 mod 7 + B mod 8, res = 7, count = 29, rank = 18] [program = B mod 8 + 1 mod C, res = 7, count = 25, rank = 17] [program = C mod 7 * (10 - 8), res = 4, count = 13, rank = 18] [program = C mod 7 * (2 mod C), res = 4, count = 11, rank = 18] [program = C mod 7 * (2 mod B), res = 4, count = 11, rank = 18] [program = B * C mod 10, res = 4, count = 10, rank = 12] [program = C mod 7 * (4 - 2), res = 4, count = 10, rank = 18] [program = C mod 7 * (2 mod 3), res = 4, count = 8, rank = 19] [program = C * A mod 9, res = 0, count = 5, rank = 12] [program = B mod 8 + 1 mod 7, res = 7, count = 4, rank = 18] [program = B mod 8 + 1 mod 3, res = 7, count = 4, rank = 18] [program = B mod 8 + (8 - 7), res = 7, count = 4, rank = 17] [program = B mod 8 + 1 mod 4, res = 7, count = 3, rank = 18] [program = C mod 7 * (10 / 5), res = 4.00000000000000000, count = 3, rank = 19] [program = (C + 4) mod 10, res = 3, count = 2, rank = 12] [program = B mod 8 + 1 mod A, res = 7, count = 2, rank = 17] [program = B mod 8 + (5 - 4), res = 7, count = 2, rank = 17] [program = C mod 7 * (8 / 4), res = 4.00000000000000000, count = 2, rank = 19] [program = (C - 6) mod (A * 5), res = 3, count = 1, rank = 17] [program = C * B mod (C + 6), res = 9, count = 1, rank = 16] [program = B * C mod (9 + 1), res = 4, count = 1, rank = 17] [program = A * C mod (9 mod 10), res = 0, count = 1, rank = 18] [program = 4 * A mod (C + 5), res = 6, count = 1, rank = 17] [program = 2 * C mod (8 + 6), res = 4, count = 1, rank = 18] [program = B mod 8 - (2 - 3), res = 7, count = 1, rank = 17] [program = B - C - (C - 9), res = -3, count = 1, rank = 14] [program = B * C - 10 * A, res = 4, count = 1, rank = 16] [program = 8 - 6 mod A, res = 7, count = 1, rank = 12] [program = 6 mod 5 + B mod 8, res = 7, count = 1, rank = 18] [program = 1 mod B + B mod 8, res = 7, count = 1, rank = 17] [program = C mod 7 * (A mod 5), res = 0, count = 1, rank = 18] [program = A mod 5 * (C mod 7), res = 0, count = 1, rank = 18] [program = 10 mod C * (C mod 7), res = 2, count = 1, rank = 18] [program = 10 mod 4 * (C mod 7), res = 4, count = 1, rank = 19] [program = 2 mod 6 * (C mod 7), res = 4, count = 1, rank = 19] resultMap = [4 = 27,7 = 22,0 = 5,4.00000000000000000 = 4,3 = 3,9 = 1,6 = 1,2 = 1,-3 = 1] This program was created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ import util. data(missing_number14,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [[[7,9,8],2], [[2,7,4],8] ], Vars = ['A','B','C'], Unknown = [5,6,9], Ops = [+,*,-,/,mod], % Ops = [+,-,*,div,gcd,lcm], % Ops = [+,-,*,div,gcd,lcm], Constants = 1..10, MaxSize = 1, Params = new_map([ init_size=1000, num_gens=1000 ]).