/* From Muhammad Zain "Sarwar: People With an IQ of 120+ Can Solve This Missing Number Puzzle" https://medium.com/puzzle-sphere/people-with-an-iq-of-120-can-solve-this-missing-number-puzzle-b6a6bbbc2dc9 """ Find missing number! 5 9 13 2 3 8 4 5 14 6 ? 20 11 19 27 """ Representation A B E C D Manual solutions: 1) E = A - B First figure : 3 = 5 - 2 Second figure: 5 = 9 - 4 Third figre : ? = 13 - 6 = 7 2) E = C - A First figure : 3 = 8 - 5 Second figure: 5 = 14 - 9 Third figre : ? = 20 - 13 = 7 3) E = D - C First figure : 3 = 11 - 8 Second figure: 5 = 19 - 14 Third figre : ? = 27 - 20 = 7 4) E = B + 1 First figure : 3 = 2 + 1 Second figure: 5 = 4 + 1 Third figre : ? = 6 + 1 = 7 Only + and - (with num_gens=10): AllGood: [program = A - B, res = 7, count = 35, rank = 5] [program = C - A, res = 7, count = 30, rank = 5] [program = D - C, res = 7, count = 38, rank = 5] [program = C + (C - (B + D)), res = 7, count = 2, rank = 13] [program = C + (C - (D + B)), res = 7, count = 3, rank = 13] [program = C + (D - (A + D)), res = 7, count = 1, rank = 13] [program = C - B + (A - C), res = 7, count = 1, rank = 13] [program = D - A + (A - C), res = 7, count = 2, rank = 13] [program = A - (A + (C - D)), res = 7, count = 1, rank = 13] [program = A - (B - (B - B)), res = 7, count = 1, rank = 13] [program = C - (C + (B - A)), res = 7, count = 2, rank = 13] [program = C - (A - A + A), res = 7, count = 2, rank = 13] [program = C - (B + D - C), res = 7, count = 3, rank = 13] [program = C + C - (D + B), res = 7, count = 1, rank = 13] [program = C + (B - A) - B, res = 7, count = 5, rank = 13] [program = C + (D - D) - A, res = 7, count = 1, rank = 13] [program = A - A - (A - C), res = 7, count = 2, rank = 13] [program = B - B - (A - C), res = 7, count = 1, rank = 13] [program = D - B - (D - A), res = 7, count = 1, rank = 13] With +, -, / (num_gens=10): AllGood: [program = A - B, res = 7, count = 27, rank = 5] [program = C - A, res = 7, count = 19, rank = 5] [program = D - C, res = 7, count = 16, rank = 5] [program = A / A + B, res = 7.00000000000000000, count = 7, rank = 10] [program = A - (D + B - D), res = 7, count = 1, rank = 13] I.e. B + 1 */ data(missing_number12,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [[[5,2,8,11],3], [[9,4,14,19],5] ], % Ops = [+,-,*,/], Ops = [+,-], Constants = [], % No other values Vars = ['A','B','C','D'], Unknown = [13,6,20,27], MaxSize = 11, Params = new_map([init_size=1000, num_gens=10, sort_by_rank=true % , unique_vars=true ]). /* Are there cross figure solutions? Representation A B C 5 9 13 2 3 8 4 5 14 6 ? 20 11 19 27 C = 2 * B - A 13 = 9*2 - 5 6 = 4*2 - 2 20 = 14*2 - 8 27 = 19*2 - 11 ? = 5*2 - 3 = 7 AllGood: [program = B + (B - A), res = 7, count = 9, rank = 9] [program = B - A + B, res = 7, count = 9, rank = 9] [program = B * 2 - A, res = 7, count = 4, rank = 11] [program = B - (A - 1 * B), res = 7, count = 2, rank = 15] [program = B - (B + (A - (B + B))), res = 7, count = 8, rank = 17] [program = B * 2 - A / 1, res = 7.00000000000000000, count = 3, rank = 17] [program = 2 * B - (1 + A) + 1, res = 7, count = 7, rank = 21] resultMap = [7 = 6,7.00000000000000000 = 1] */ /* data(missing_number12,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [[[5,9],13], [[2,4],6], [[8,14],20], [[11,19],27] ], Ops = [+,-,*,/], % Ops = [+,-], Constants = 1..2, Vars = ['A','B'], Unknown = [3,5], MaxSize = 11, Params = new_map([init_size=1000, num_gens=10, sort_by_rank=true % , unique_vars=true ]). */