/* https://puzzles9.com/puzzles/number-sequence-puzzles-with-answers/ Puz1060 """ 2 11 20 4 9 32 7 8 49 4 10 ? Answer : 36 Multiply first two numbers in each row and subtract first number from the product to get third number in that row. (2*11)-2 = 20 (4*9)-4 = 32 (7*8)-7 = 49 (4*10)-4 = 36 So, answer is 36. """ Two representations, the first is the intended one. * First representation data = [[[2,11],20], [[4,9],32], [[7,8],49]] vars = [A,B] unknown = [4,10] maxCount = 3 [program = A * B - A,res = 36,count = 28] [program = (B - 1) * A,res = 36,count = 24] [program = (B * A - A) * 1,res = 36,count = 22] [program = B * A - A,res = 36,count = 21] [program = A * B - A * 1,res = 36,count = 20] [program = 1 * (B * A - A),res = 36,count = 18] [program = A - A + (B * A - A),res = 36,count = 16] [program = B * A - A + (B - B),res = 36,count = 15] [program = B * 1 * A - A,res = 36,count = 12] [program = A * (B - 1),res = 36,count = 12] [program = B * 1 * A - A * 1,res = 36,count = 6] [program = B * A - A - (B - B) * B,res = 36,count = 4] [program = B * A - A * 1,res = 36,count = 2] [program = B * A - A - (B - B),res = 36,count = 1] resultMap = [36 = 14] * Second representation (transposed) data = [[[2,4,7],4], [[11,9,8],10]] vars = [A,B,C] unknown = [20,32,49] ops = (map)[infix = [+,*,-]] [program = C + 2 - (1 + (8 - B)),res = 74,count = 28] [program = B - (1 + 8 - (2 + C)),res = 74,count = 27] [program = 1 + (B - 8) + C,res = 74,count = 25] [program = 2 * C - (B + 8) + A,res = 78,count = 18] [program = 1 + (B - 8) + C * 1,res = 74,count = 15] [program = C + (1 + (B - 8)),res = 74,count = 5] [program = B * 1 - (1 + 8 - (2 + C)),res = 74,count = 4] resultMap = [74 = 6,78 = 1] */ data(puz1060,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Matrix = [[2,11,20], [4,9,32], [7,8,49], [4,10,_] ], Ops = [+,*,-], Constants = [1,2,4,8,16,32], ( nl, make_data_matrix(Matrix,Data,Unknown,Vars), MaxSize = 4 ; nl, % transposed matrix make_data_matrix(Matrix.transp,Data,Unknown,Vars), MaxSize = 6 ), Params = new_map([num_gens=30]).