/* https://twitter.com/ShriramKMurthi/status/1653941718885048326 """ Kid has a math homework I can't figure out. What are the next 3 numbers in this sequence? 2, 12, 36, 80 [Teacher rarely makes typos, this is not meant to be a trick question, etc. This is late middle-school, so leave your fancy trig-and-beyond at home.] """ make_seq([2,12,36,80],2,Data,Unknown,Vars): [program = 3 + (7 + B) + (A + (A + 10)),res = 172,count = 709] [program = 10 + (A + B) + (A + 10),res = 172,count = 556] [program = 10 + A + (10 + (A + B)),res = 172,count = 518] [program = 10 + (A + B) + (10 + A),res = 172,count = 484] [program = A + (A + 10) + (3 + (7 + B)),res = 172,count = 429] [program = A + 10 + (10 + (A + B)),res = 172,count = 382] [program = 10 + (A + B) + (B + 10 + (A - B)),res = 172,count = 337] .... resultMap = [172 = 27,172.0 = 1] -> 20 + 2*A + B I.e. 20 + 2*2 + 12 = 36 20 + 2*12 + 36 = 80 20 + 2*36 + 80 = 172 20 + 2*80 + 172 = 352 20 + 2*172 + 352 = 716 make_point_seq([2,12,36,80],Data,Unknown,Vars): [program = A * (A * A + A),res = 150,count = 991] [program = A * (A + A * A),res = 150,count = 978] [program = A * (A + A * A + (A - A)),res = 150,count = 921] [program = 1 * A * (A * A + A),res = 150,count = 593] [program = 1 * A * (A + A * A),res = 150,count = 523] [program = A * ((7 + (A - 6)) / A * (A * A)),res = 150.0,count = 514] ... resultMap = [150.0 = 153,150 = 120] -> A^2 * (1+A) make_seq([2,12,36,80],3,Data,Unknown,Vars) -> [program = 2 * (4 * 10),res = 80,count = 813] [program = 2 * (C + 4),res = 168,count = 711] [program = 2 * (10 * 4),res = 80,count = 570] [program = 2 * (2 * (8 + B)),res = 176,count = 551] [program = 1 * (10 * 8),res = 80,count = 540] [program = 2 * (4 + C),res = 168,count = 492] [program = 2 * (5 + (C - 1)),res = 168,count = 491] [program = 2 * (8 * 5),res = 80,count = 475] ... resultMap = [80 = 122,480 = 77,168 = 76,80.0 = 64,168.0 = 37,124 = 30,1008 = 26,480.0 = 25,192 = 21,968 = 20,1008.0 = 19,176 = 18,188 = 17,1056 = 16,240.0 = 16,2880 = 15,178 = 15,208 = 12,144 = 12,1248 = 11,200.0 = 11,200 = 11,176.0 = 11,160 = 11,224 = 9,128 = 9,-320 = 9,220 = 8,172 = 8,124.0 = 8,104 = 8,1128 = 7,1066.67 = 7,320 = 7,177.778 = 7,158 = 7,120 = 7,13.3333 = 7,1056.0 = 6,272 = 6,180 = 6,134 = 6,248 = 5,208.0 = 5,13.3333 = 5,-20 = 5,-672 = 5,17280 = 4,6336 = 4,1440.0 = 4,1040 = 4,968.0 = 4,448 = 4,228 = 4,192.0 = 4,108.0 = 4,28.0 = 4,-960.0 = 4,6336.0 = 3,2880.0 = 3.... */ data(test2,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- % make_seq([2,12,36,80],1,Data,Unknown,Vars), % -> no solution? make_seq([2,12,36,80],2,Data,Unknown,Vars), % -> 172 % make_seq([2,12,36,80],3,Data,Unknown,Vars), % -> alot (see above) % This is probably the assumed answer: A^2*(1+A) -> 150. % make_point_seq([2,12,36,80],Data,Unknown,Vars), Ops = [+,-,*,/], Constants = 1..10, MaxSize = 18, Params = new_map([num_gens=1000]).