/* Missing number in Picat. Muhammad Zain Sarwar: "People With an IQ of 140+ Can Solve This Missing Number Puzzle!" https://medium.com/puzzle-sphere/people-with-an-iq-of-140-can-solve-this-missing-number-puzzle-1bcb59444221 """ 78 62 17 35 97 86 21 73 ? """ Manual (pre software) solution: Reading row wise: 7 8 6 2 1 7 3 5 9 7 8 6 2 1 7 3 ? Which can be grouped as 7 8 6 2 1 7 3 5 9 7 8 6 2 1 7 3 ? Using Picat: Picat> L=[7,8,6,2,1,7,3,5,9,7,8,6,2,1,7,3,A,B], append(X,X,L) L = [7,8,6,2,1,7,3,5,9,7,8,6,2,1,7,3,5,9] A = 5 B = 9 X = [7,8,6,2,1,7,3,5,9] ?; no So 59. Reading columnwise: 7 8 3 5 2 1 6 2 9 7 7 3 1 7 8 6 ? Nope. Digits columnwise: 7 3 2 8 5 1 6 9 7 2 7 3 1 8 ? 7 6 ? Nope. Let's check if there are more "standard" missing number puzzle solutions. Yes, but not any easy one... * Rows: AllGood: [program = B + (7 - A) div (8 div (B div (A mod B))) - A div 8, res = 64, count = 779, rank = 41] [program = B + (7 - A) div (8 div (B div (A mod B))) - (3 + B mod 8), res = 62, count = 467, rank = 46] [program = B + (7 - A) div (8 div (B div (A mod B))) - ((2 - 8) div 6 + A) div 8, res = 64, count = 221, rank = 57] resultMap = [64 = 2,62 = 1] AllGood: [program = B div A - (A + (8 - B) * 7) div ((A - 4) div 4), res = 112, count = 1, rank = 41] resultMap = [112 = 1] AllGood: [program = B - 54 + (B + (gcd(A,B) - 55)), res = 38, count = 1, rank = 25] resultMap = [38 = 1] AllGood: [program = 23 + (B + gcd(A,35)) - 69, res = 34, count = 24, rank = 22] resultMap = [34 = 1] AllGood: [program = 10 + A * digital_root(B div A) + digital_root(B - 1), res = 82, count = 879, rank = 45] [program = 10 + A * digital_root(B div A) + B div digit_sum(B), res = 80, count = 857, rank = 45] [program = digital_root(B - 1) + (10 + A * digital_root(B div A)), res = 82, count = 857, rank = 45] [program = 10 + A * digital_root(B div A) + (A div B + 6), res = 79, count = 741, rank = 40] [program = A div B + 6 + (10 + A * digital_root(B div A)), res = 79, count = 679, rank = 40] [program = B div digit_sum(B) + (10 + A * digital_root(B div A)), res = 80, count = 630, rank = 45] [program = 10 + A * digital_root(B div A) + digit_sum(B + 8), res = 82, count = 488, rank = 45] [program = digit_sum(B + 8) + (10 + A * digital_root(B div A)), res = 82, count = 476, rank = 45] [program = 10 + A * digital_root(B div A) + digit_sum(digital_root(2) * (A div 9)), res = 77, count = 312, rank = 62] [program = digit_sum(digital_root(2) * (A div 9)) + (10 + A * digital_root(B div A)), res = 77, count = 308, rank = 62] [program = 10 + A * digital_root(B div A) + digit_sum(digit_sum(B) - 1), res = 82, count = 93, rank = 55] [program = digit_sum(digit_sum(B) - 1) + (10 + A * digital_root(B div A)), res = 82, count = 71, rank = 55] resultMap = [82 = 6,80 = 2,79 = 2,77 = 2] AllGood: [program = 4 + 10 * digital_root(A * B + B) - digital_root(A div digit_sum(3 + B)), res = 43, count = 1, rank = 65] resultMap = [43 = 1] * Columns: AllGood: [program = pow4(7) mod B, res = 79, count = 937, rank = 12] [program = pow4(7) mod (B + B), res = 165, count = 919, rank = 16] [program = pow4(7) mod (4 * B), res = 337, count = 221, rank = 18] [program = pow4(7) mod (2 * B), res = 165, count = 195, rank = 18] resultMap = [165 = 2,337 = 1,79 = 1] AllGood: [program = lcm(B,47) div A, res = 237, count = 763, rank = 13] [program = lcm(B,47) div lcm(A,A), res = 237, count = 681, rank = 19] [program = lcm(B,47) div gcd(A,A), res = 237, count = 655, rank = 19] resultMap = [237 = 3] AllGood: [program = digit_sum(digit_sum(B)) + 9 + A * (B div A), res = 73, count = 454, rank = 40] [program = A * (B div A) + (digit_sum(digit_sum(B)) + 9), res = 73, count = 433, rank = 40] resultMap = [73 = 2] AllGood: [program = digital_root(5 div (3 + digital_root(A))) - digit_sum(B) - (digital_root(A) - B), res = 64, count = 480, rank = 64] [program = B - digit_sum(digital_root(5) + A) - (B - 8) div 8, res = 73, count = 200, rank = 45] resultMap = [73 = 1,64 = 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_number13,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- % Data = [ [[78,62],17], % [[35,97],86] % ], % Vars = ['A','B'], % Unknown = [21,73], Matrix = chunks_of([78,62,17,35,97,86,21,73,_],3), % rows % Matrix = chunks_of([78,62,17,35,97,86,21,73,_],3).transpose, % columns % Matrix = chunks_of([78,62,17,35,97,86,21,73].reverse ++ [_],3), % reverse rows make_data_matrix(Matrix, Data, Unknown, Vars), % Ops = [+,-,*,div,pow2,pow3,pow4,pow5,pow6], Ops = [+,-,*,div,digit_sum,digital_root], % Ops = [+,-,*,div,gcd,lcm], % Ops = [+,-,*,div,gcd,lcm], Constants = 1..10, MaxSize = 11, Params = new_map([ init_size=1000, debug=false, num_gens=1000 ]).