/* From https://www.themathdoctors.org/pattern-and-sequence-puzzles/ """ How do I figure out the next 2 numbers in the pattern 1, 8, 27, 64, ____, ____? "" * Just +,-,*,/:" [program = A * (A * A),res = 125,count = 11] [program = A * A * A,res = 125,count = 10] [program = A / 1 * (A * A) * (3 - 2),res = 125.0,count = 8] [program = A / 1 * (A * A) * 1,res = 125.0,count = 4] [program = A * (A * A) + (3 - 3) * 2,res = 125,count = 3] [program = A * (A * A) / 1,res = 125.0,count = 1] [program = (A * 2 - A) * (A * A),res = 125,count = 1] [program = A * A * 1 * (1 * A),res = 125,count = 1] [program = A * A * (A * 1),res = 125,count = 1] [program = 1 * 1 * (A / 1 * (A * A)),res = 125.0,count = 1] resultMap = [125 = 6,125.0 = 4] * Using ** (which blows up after a while): [found_function = A ** 3,check = 125] [found_function = A * A ** 2,check = 125] * Also pow2 and pow3 (no **) [program = pow3(A),res = 125,count = 230] [program = pow2(A) * A,res = 125,count = 9] [program = A * pow2(A),res = 125,count = 8] [program = 1 * pow3(A),res = 125,count = 6] [program = pow3(A) * 1,res = 125,count = 5] [program = A * (A * A),res = 125,count = 4] [program = pow3(pow2(A) / A),res = 125.0,count = 4] [program = 1 * A * A * A,res = 125,count = 3] ... */ data(puzzle4,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Seq = [1, 8, 27, 64], Ops = [+,-,*], % Ops = [+,-,*,/,**], % Ops = [+,-,*,/,pow2,pow3], Constants = 1..3, MaxSize = 5, make_point_seq(Seq,Data,Unknown,Vars), % make_seq(Seq,1,Data,Unknown,Vars), % make_seq(Seq,2,Data,Unknown,Vars), Params = new_map().