/* 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-missing-numbers-47c2a3117435 """ Find missing number? 7 2 5 9 2 8 7 8 4 6 ? 9 A B D C """ A solution: B*C = AD 9*7 = 72 7*4 = 28 6*9 = 54 -> ? = 4 To solve this with symbolic regression, we thus need to_num2(A,B) -> AB. See below for some other approaches (and answers). AllGood: [program = C - to_num2(A,C) + B * C,res = 4,count = 739] [program = C * B + (C - to_num2(A,C)),res = 4,count = 714] [program = B * C + (C - to_num2(A,C)),res = 4,count = 702] [program = C - to_num2(A,C) + C * B,res = 4,count = 256] [program = to_num2(B - A - B - C,to_num2(C,C * B)),res = 4,count = 201] [program = C * B - to_num2(A,C - C),res = 4,count = 133] [program = A * C - A * B + B * (C - A),res = 39,count = 29] [program = B * C - to_num2(A,C - C),res = 4,count = 6] [program = to_num2(C - (C + A),C * B),res = 4,count = 1] [program = to_num2(C - (A + C),C * B),res = 4,count = 1] resultMap = [4 = 9,39 = 1] C - to_num2(A,C) + B * C: 8 - 78 + 9*8 = 2 ; 4 - 24 + 7*4 = 8 ; 9 - 59 + 6*9 = 4 Without to_num2 (and no constants) we get some other answers, e.g. -8 and 32: AllGood: [program = (B - C) * (C - A) - (A - C),res = -8,count = 1] resultMap = [-8 = 1] AllGood: [program = (A - C - (C - A)) * (C - C - C + A),res = 32,count = 71] [program = (A - C) * (A - C - (C - A)),res = 32,count = 37] [program = (C - C - C + A) * (A - C - (C - A)),res = 32,count = 31] [program = (A - C - (C - A)) * (A - C),res = 32,count = 2] resultMap = [32 = 4] Without to_num2/2 and constant 10: AllGood: [program = C * B - A * 10,res = 4,count = 308] [program = C * B - 10 * A,res = 4,count = 159] resultMap = [4 = 2] */ data(missing_number6,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [ [[7,9,8],2], [[2,7,4],8] ], % Ops = [+,-,*,to_num2], Ops = [+,-,*], Unknown = [5,6,9], Vars = "ABC", Constants = [], % No constants MaxSize = 11, Params = new_map([ init_size=1000, num_gens=1000, show_only_good=false ]).