/* From TFL (@MathGuyTFL) https://x.com/MathGuyTFL/status/1902865641549238652 """ 9 6 8 5 7 4 \/ \/ \/ 45 39 ? """ My take: (9+6)*(9-6) = 45 (8+5)*(8-5) = 39 (7+4)*(7-4) = 33 All solutions are 33 (or 33.0) AllGood: [program = 3 * (B + A),res = 33,count = 989] [program = 3 * (A + B),res = 33,count = 960] [program = 3 * (B + (0 + A)),res = 33,count = 794] [program = 3 * (B * 1 + A),res = 33,count = 704] [program = 3 * (0 + B + A),res = 33,count = 645] [program = 3 * (B + (3 + B)),res = 33,count = 632] [program = 3 * (A + (B - (A - A))),res = 33,count = 599] [program = 1 * 3 * (A + B),res = 33,count = 379] [program = 1 * (3 * (A + B)),res = 33,count = 329] [program = 3 * (A + (0 + B)),res = 33,count = 255] [program = 1 * 3 * (B + A),res = 33,count = 249] [program = 3 * (B * 2 + 3),res = 33,count = 243] [program = 3 * 1 * (A + B),res = 33,count = 198] [program = (A + B) * 3,res = 33,count = 197] [program = 1 * 3 * (B + (0 + A)),res = 33,count = 193] [program = 1 * 3 * (0 + B + A),res = 33,count = 183] [program = 3 * (A - (A - (3 + B)) + B),res = 33,count = 169] [program = (B + A) * 3,res = 33,count = 168] [program = 3 * (B / 1 + A),res = 33.0,count = 148] [program = 3 * 1 * (0 + B + A),res = 33,count = 114] [program = 3 * 1 * (B + A),res = 33,count = 91] [program = (1 + 2) * (A + B),res = 33,count = 79] [program = 6 * (A + (1 / 2 - 2)),res = 33.0,count = 76] [program = (B + (3 + B)) * 3,res = 33,count = 70] [program = (0 + B + A) * 3,res = 33,count = 68] [program = (B * 1 + A) * 3,res = 33,count = 68] [program = (B + (0 + A)) * 3,res = 33,count = 65] [program = (1 + 2) * (B + A),res = 33,count = 63] [program = (A + B) * (A - B),res = 33,count = 60] [program = 1 * 3 * (B * 1 + A),res = 33,count = 58] [program = 3 * (B + A - 0),res = 33,count = 58] [program = 0 + B * 6 + 9,res = 33,count = 54] [program = (A + (B - (A - A))) * 3,res = 33,count = 48] [program = 1 * 3 * (A + (B - (A - A))),res = 33,count = 45] [program = A * (1 * 6) - 9,res = 33,count = 44] [program = 0 + B * 6 + 9 * 1,res = 33,count = 44] [program = (A - B) * (B + A),res = 33,count = 40] [program = (A - B) * (A + B),res = 33,count = 35] [program = (B * 2 + 3) * 3,res = 33,count = 32] [program = (B + A) * (A - B),res = 33,count = 31] [program = (A + B) * (4 - 1),res = 33,count = 31] [program = 3 * (B * A / A + A),res = 33.0,count = 31] [program = A * 6 - 9,res = 33,count = 29] [program = 9 + (0 + B * 6),res = 33,count = 27] [program = (A + B) * (3 / (1 / 1) / 1),res = 33.0,count = 25] [program = (1 + 2) * (0 + B + A),res = 33,count = 21] [program = 3 * (A + B) * 1,res = 33,count = 21] [program = A * (1 * 6) - (3 + 6),res = 33,count = 20] [program = (A + B) * (1 + 2),res = 33,count = 20] [program = (A + (0 + B)) * 3,res = 33,count = 19] [program = 3 * (A + B) - 0,res = 33,count = 18] [program = (A + B) * (1 * 3),res = 33,count = 18] [program = 0 + 3 * (A + B),res = 33,count = 17] [program = (B + (0 + A)) * (1 * 3),res = 33,count = 17] [program = (B + A) * (3 / (1 / 1) / 1),res = 33.0,count = 17] [program = (B / 1 + A) * 3,res = 33.0,count = 15] [program = (B + A) * (1 * 3),res = 33,count = 15] [program = B * 6 + 9,res = 33,count = 14] [program = (A - B) * (B + (0 + A)),res = 33,count = 14] [program = (A + B) * ((5 + 1) / 2),res = 33.0,count = 14] [program = (0 + B + A) * (1 * 3),res = 33,count = 13] [program = (B * 1 + A) * (1 * 3),res = 33,count = 13] [program = (A + B) * (3 * 1),res = 33,count = 13] [program = 3 * (A + B) + 0,res = 33,count = 12] [program = (A - B) * (B * 1 + A),res = 33,count = 12] [program = (B + (0 + A)) * (A - B),res = 33,count = 12] [program = (B + A) * (3 * 1),res = 33,count = 11] [program = (A - B) * (0 + B + A),res = 33,count = 10] [program = 3 * (A + B) / 1,res = 33.0,count = 9] [program = (A - B) * (B + (3 + B)),res = 33,count = 9] [program = (A - (A - (3 + B)) + B) * 3,res = 33,count = 9] [program = (B + (3 + B)) * (A - B),res = 33,count = 9] [program = 6 * B + 9,res = 33,count = 8] [program = 9 + 6 * B,res = 33,count = 8] [program = 1 * 3 * (B + (3 + B)),res = 33,count = 8] [program = (A + (1 / 2 - 2)) * 6,res = 33.0,count = 7] [program = (4 * (A + B) - B) / 1 - A,res = 33.0,count = 6] [program = 3 / (1 / 1) / 1 * (B + A),res = 33.0,count = 6] [program = A / A * (3 * (A + B)),res = 33.0,count = 6] [program = (B + A - 0) * 3,res = 33,count = 6] [program = (A - B) * (A + (B - (A - A))),res = 33,count = 6] [program = (B + A) * (1 + 2),res = 33,count = 6] [program = (5 + 1) / 2 * (A + B),res = 33.0,count = 5] [program = (4 - 1) * (A + B),res = 33,count = 5] [program = (0 + B + A) * (3 * 1),res = 33,count = 5] [program = (B * 1 + A) * (A - B),res = 33,count = 5] [program = 3 * (A + B) * (A / A),res = 33.0,count = 5] [program = 3 * 1 * (B + (0 + A)),res = 33,count = 5] [program = 6 * A - 9,res = 33,count = 4] [program = 9 + B * 6,res = 33,count = 4] [program = (5 + 1) / 2 * (0 + B + A),res = 33.0,count = 4] [program = (A - B) * (A + (0 + B)),res = 33,count = 4] [program = (B / B - B + 2 + B) * (A + B),res = 33.0,count = 4] [program = (A + (B - (A - A))) * (1 * 3),res = 33,count = 4] [program = 3 * (A + B) * (B / 1 / B),res = 33.0,count = 4] [program = A * 4 + B + B - 3,res = 33,count = 3] [program = (5 + 1) / 2 * (B + A),res = 33.0,count = 3] [program = (A - B) * (B + A - 0),res = 33,count = 3] [program = (4 - 1) * (B + A),res = 33,count = 3] [program = (0 + B + A) * ((5 + 1) / 2),res = 33.0,count = 3] [program = (0 + B + A) * (1 + 2),res = 33,count = 3] [program = (B * 2 + 3) * (A - B),res = 33,count = 3] [program = (B + A) * ((5 + 1) / 2),res = 33.0,count = 3] [program = (B + A) * (3 - 0),res = 33,count = 3] [program = (A + B) * (A - (B / 2 - B * (0 * B) / (8 * B) / A) * 2),res = 33.0,count = 3] [program = 3 * (A * 2 - 3),res = 33,count = 3] [program = 3 * (A + B) / (A / A),res = 33.0,count = 2] [program = 8 * A * B / B - A - 0 - 9 - A,res = 33.0,count = 2] [program = 6 * A - (6 + B - B) - 3,res = 33,count = 2] [program = (B + A) * 4 - (A + B),res = 33,count = 2] [program = A * A - B * B,res = 33,count = 2] [program = A * 5 + 0 + (A - 9),res = 33,count = 2] [program = 5 * B + B + 9 / 1,res = 33.0,count = 2] [program = B + (0 + A) + (A + A + (B + B)),res = 33,count = 2] [program = A + 6 + 5 * B,res = 33,count = 2] [program = 3 * (A + B) + (A - A),res = 33,count = 2] [program = 9 + (B + B * 5),res = 33,count = 2] [program = 3 / (1 / 1) / 1 * (A + B),res = 33.0,count = 2] [program = 3 / B * ((B + A) * B),res = 33.0,count = 2] [program = 3 / 1 * (A + B),res = 33.0,count = 2] [program = (A - (B - 0)) * (B * 1 + A),res = 33,count = 2] [program = (A - B) * (B * 2 + 3),res = 33,count = 2] [program = (9 - 6) * (0 + B + A),res = 33,count = 2] [program = (8 - 5) * (0 + B + A),res = 33,count = 2] [program = (3 - 0) * (B + A),res = 33,count = 2] [program = (B * A / A + A) * 3,res = 33.0,count = 2] [program = (0 + B + A) * (A - B),res = 33,count = 2] [program = (0 + B + A) * (4 - 1),res = 33,count = 2] [program = (0 + B + A) * (B / B - B + 2 + B),res = 33.0,count = 2] [program = (B * 1 + A) * (9 - 6),res = 33,count = 2] [program = (B + (3 + B)) * (1 * 3),res = 33,count = 2] [program = (B + A) * (A - (B - 0)),res = 33,count = 2] [program = (B + A) * (4 - 1),res = 33,count = 2] [program = (A + (B - (A - A))) * (A - B),res = 33,count = 2] [program = (A + (0 + B)) * (A - B),res = 33,count = 2] [program = (A + B) * (3 / 1),res = 33.0,count = 2] [program = (A + B) * (A * (3 / A)),res = 33.0,count = 2] [program = 3 * (7 - 6) * (B + (0 + A)),res = 33,count = 2] [program = 1 * 3 * (B / 1 + A),res = 33.0,count = 2] [program = (0 + B + A) / (A / ((2 + 1) * A)),res = 33.0,count = 1] [program = (A + B) / (2 / 6),res = 33.0,count = 1] [program = 9 * (B + A) / 3,res = 33.0,count = 1] [program = (4 * (A + B) - B) / 1 - (6 + (B - A) + B),res = 33.0,count = 1] [program = A * 6 - 6 - 1 * 3,res = 33,count = 1] [program = 8 * A - 9 - A * 2,res = 33,count = 1] [program = 8 * A - 9 - 2 * A,res = 33,count = 1] [program = 7 * A - A - 9,res = 33,count = 1] [program = 6 * A - 5 - (9 - 5),res = 33,count = 1] [program = A * 5 + B - 6,res = 33,count = 1] [program = 6 * B + (B - B) - (A - 9 - A),res = 33,count = 1] [program = (A - B) * (A + A) - (1 + 8),res = 33,count = 1] [program = (A - B) * (A + A) - 9,res = 33,count = 1] [program = (B + A) * 4 - (B + (0 + A)),res = 33,count = 1] [program = B * 3 - (B - A) * A,res = 33,count = 1] [program = A * (A * 1) - B * B,res = 33,count = 1] [program = A * (1 * 6) - (9 + A - A),res = 33,count = 1] [program = A * (1 * 6) - 9 * 1,res = 33,count = 1] [program = A * 5 - (6 - B),res = 33,count = 1] [program = 7 * A - (9 + A),res = 33,count = 1] [program = 6 * (A * 1) - 9,res = 33,count = 1] [program = 3 * (A + B) - A * ((A - A) * 1) / 7,res = 33.0,count = 1] [program = 3 * (A + B) - 0 / (B - B - 2 / (B * 5)),res = 33.0,count = 1] [program = 3 * (A + B) - (B - B),res = 33,count = 1] [program = 3 * (A + B) - (A - A),res = 33,count = 1] [program = 3 * (A + B) - (9 - 9),res = 33,count = 1] [program = 3 * (A + B) - (B + (2 - B)) * (7 - A) / (B - A / (A * 8)) * 0,res = 33.0,count = 1] [program = 3 * (A + B) - (A - A) * (4 * B),res = 33,count = 1] [program = 3 * (A + B) - (7 - 7) * B * (B / B),res = 33.0,count = 1] [program = 3 * (A + B) - A * 0,res = 33,count = 1] [program = 3 * (A + B) - 0 * A,res = 33,count = 1] [program = 3 * A - (B - A) * B,res = 33,count = 1] [program = 9 - B * 6 / (6 - 7),res = 33.0,count = 1] [program = 6 - (B - B * 6 - A),res = 33,count = 1] [program = A * ((A - A) * 1) / 7 + 3 * (A + B),res = 33.0,count = 1] [program = 6 * 5 - B + 7 * (A - 6 * 1),res = 33,count = 1] [program = A - A + 3 * (A + B),res = 33,count = 1] [program = 2 - 2 + 3 * (A + B),res = 33,count = 1] [program = 6 * B + 0 / B + 4 * 0 + 9,res = 33.0,count = 1] [program = A + A + (B + B) + (B + (0 + A)),res = 33,count = 1] [program = B * 1 * 6 + A + (9 - A),res = 33,count = 1] [program = B * 5 + 6 + A,res = 33,count = 1] [program = B + (5 * A - 2) + (0 / 6 - 4),res = 33.0,count = 1] [program = B + (B + B) + A * 3,res = 33,count = 1] [program = B + B * 5 + 9,res = 33,count = 1] [program = A + ((6 - 2) * (B - 6) + A) + (3 + 4 * 6),res = 33,count = 1] [program = A + 6 + B * 5,res = 33,count = 1] [program = (3 - A) * B + A * A,res = 33,count = 1] [program = 5 * 0 * A + 3 * (A + B),res = 33,count = 1] [program = B * 5 + (A + 6),res = 33,count = 1] [program = B * 3 + (A + A + A),res = 33,count = 1] [program = A * (1 * 6) + (A - 9 - A),res = 33,count = 1] [program = A * 3 + (B + (B + B)),res = 33,count = 1] [program = 6 * B + (9 - 0),res = 33,count = 1] [program = 5 * B + (A + 6),res = 33,count = 1] [program = 3 * (A + B) + A * (0 / (B / (B + A))) * ((A - A) * 5) / 9,res = 33.0,count = 1] [program = 3 * (A + B) + (B - B),res = 33,count = 1] [program = 3 * (A + B) + A / 6 * 0,res = 33.0,count = 1] [program = 3 * (A + B) + (A - B) * 0,res = 33,count = 1] [program = 3 * (A + B) + B * 0,res = 33,count = 1] [program = 3 * (A + B) + 2 * (A - A),res = 33,count = 1] [program = 3 * (A + B) + 0 * A,res = 33,count = 1] [program = 3 * B + A * (3 - 0),res = 33,count = 1] [program = 3 * B + 3 * A,res = 33,count = 1] [program = 2 * (A - A) + 3 * (A + B),res = 33,count = 1] [program = 0 * 7 + 3 * (A + B),res = 33,count = 1] [program = B + (A * 5 - 6),res = 33,count = 1] [program = 1 + (B * 6 + 8),res = 33,count = 1] [program = B / 1 / B * (3 * (A + B)),res = 33.0,count = 1] [program = (A - B) / 1 * (B * 1 + A),res = 33.0,count = 1] [program = B / B * (3 * (A + B)),res = 33.0,count = 1] [program = 9 / 3 * (B + (0 + A)),res = 33.0,count = 1] [program = 5 / (0 * B - (5 - (5 + 5))) * (3 * (A + B)),res = 33.0,count = 1] [program = 4 / 4 * (3 * (A + B)),res = 33.0,count = 1] [program = 3 / 1 * (0 + B + A),res = 33.0,count = 1] [program = (A / 1 - B) * (B * 1 + A),res = 33.0,count = 1] [program = (0 / A - (B - A)) * (0 + B + A),res = 33.0,count = 1] [program = (A - A + A - B) * (B + (3 + B)),res = 33,count = 1] [program = (A - A + A - B) * (B + (0 + A)),res = 33,count = 1] [program = (A - A + A - B) * (A + (0 + B)),res = 33,count = 1] [program = (A - A + A - B) * (A + B),res = 33,count = 1] [program = (B + A - 0) * (A - B),res = 33,count = 1] [program = (4 + 3 - 4) * (B * 1 + A),res = 33,count = 1] [program = (A * 2 - 3) * (A - B),res = 33,count = 1] [program = (A * 2 - 3) * 3,res = 33,count = 1] [program = (A - (B - 0)) * (B / 1 + A),res = 33.0,count = 1] [program = (A - (B - 0)) * (B + A),res = 33,count = 1] [program = (A - (B / 2 - B * (0 * B) / (8 * B) / A) * 2) * (B + A),res = 33.0,count = 1] [program = (A - B) * (A - (A - (3 + B)) + B),res = 33,count = 1] [program = (9 - (5 + 1)) * (A + (0 + B)),res = 33,count = 1] [program = (9 - 6) * (B * 1 + A),res = 33,count = 1] [program = (9 - 6) * (B + (0 + A)),res = 33,count = 1] [program = (7 - 4) * (B + A),res = 33,count = 1] [program = (7 - 4) * (A + (0 + B)),res = 33,count = 1] [program = (6 - (A - B)) * (A + (B - (A - A))),res = 33,count = 1] [program = (6 - 3) * (B + (0 + A)),res = 33,count = 1] [program = (5 - 4) * (3 * (A + B)),res = 33,count = 1] [program = (5 - 2) * (B + (3 + B)),res = 33,count = 1] [program = (4 - 1) * (B + (0 + A)),res = 33,count = 1] [program = (3 - (B - B)) * (A + B),res = 33,count = 1] [program = (3 - 0) * (A + (0 + B)),res = 33,count = 1] [program = (3 - 0) * (A + B),res = 33,count = 1] [program = (B / 1 + A) * (A - (B - 0)),res = 33.0,count = 1] [program = (B / 1 + A) * (1 * 3),res = 33.0,count = 1] [program = (B - A + 6) * (B + A),res = 33,count = 1] [program = (A - (A - (3 + B)) + B) * (A - B),res = 33,count = 1] [program = (A - 3 + A * 1) * (1 + 2),res = 33,count = 1] [program = (0 + B + A) * (A - (B + 0)),res = 33,count = 1] [program = (0 + B + A) * (8 - 5),res = 33,count = 1] [program = (0 + B + A) * (7 - 4),res = 33,count = 1] [program = (B * 2 + 3) * (8 - 5),res = 33,count = 1] [program = (B * 1 + A) * (3 - (A - A) * B),res = 33,count = 1] [program = (B + (3 + B)) * (9 - 6),res = 33,count = 1] [program = (B + (3 + B)) * (4 - 1),res = 33,count = 1] [program = (B + (3 + B)) * (B - A + 6),res = 33,count = 1] [program = (B + (3 + B)) * (3 * (7 - 6)),res = 33,count = 1] [program = (B + (0 + A)) * (3 / (1 / 1)),res = 33.0,count = 1] [program = (B + (0 + A)) * (A - (B - 0)),res = 33,count = 1] [program = (B + (0 + A)) * (8 - 5),res = 33,count = 1] [program = (B + (0 + A)) * (3 - (A - A) * B),res = 33,count = 1] [program = (B + (0 + A)) * (3 - 0),res = 33,count = 1] [program = (B + A) * (3 / 1),res = 33.0,count = 1] [program = (B + A) * (A - A + A - B),res = 33,count = 1] [program = (B + A) * (8 - 5),res = 33,count = 1] [program = (B + A) * (7 - 4),res = 33,count = 1] [program = (B + A) * (6 - 3),res = 33,count = 1] [program = (B + A) * (B / B - B + 2 + B),res = 33.0,count = 1] [program = (A + (1 / 2 - 2)) * (0 + 6),res = 33.0,count = 1] [program = (A + (B - (A - A))) * (8 - 5),res = 33,count = 1] [program = (A + (B - (A - A))) * (B - A + 6),res = 33,count = 1] [program = (A + (0 + B)) * (A * (B * (3 - 7)) / ((B + B) / 4 * 8) * 3 / (0 - A)),res = 33.0,count = 1] [program = (A + (0 + B)) * (7 - 4),res = 33,count = 1] [program = (A + B) * ((A - B) * A / A),res = 33.0,count = 1] [program = (A + B) * (A - A + A - B),res = 33,count = 1] [program = (A + B) * (8 - 5),res = 33,count = 1] [program = (A + B) * (7 - 4),res = 33,count = 1] [program = (A + B) * (B - B + 3),res = 33,count = 1] [program = (A + B) * (B / B - B + 2 + B),res = 33.0,count = 1] [program = (A + B) * (0 + (A - B)),res = 33,count = 1] [program = (3 + (B - B) / 9) * (B + (3 + B)),res = 33.0,count = 1] [program = (1 + 2) * (B + (0 + A)),res = 33,count = 1] [program = (0 + (A - B)) * (0 + B + A),res = 33,count = 1] [program = (0 + (A - B)) * (A + B),res = 33,count = 1] [program = A * (3 / A) * (B + (3 + B)),res = 33.0,count = 1] [program = 3 * (A + B) * (6 - 1 + 1 - 5),res = 33,count = 1] [program = 3 * (A + B) * (5 - 4),res = 33,count = 1] [program = 1 * 3 * (A - (A - (3 + B)) + B),res = 33,count = 1] [program = 3 * (A - A + A + B - 0),res = 33,count = 1] [program = 3 * (B - (1 - (A + 7) + 6)),res = 33,count = 1] resultMap = [33 = 220,33.0 = 68] Without any constants: AllGood: [program = (A + B) * A * ((A - B) / A),res = 33.0,count = 779] [program = (A + B) * (A - B),res = 33,count = 745] [program = (B + A) * (A - B),res = 33,count = 399] [program = A * ((A + B) / A) * (A - B),res = 33.0,count = 350] [program = B * (A / B * A - B),res = 33.0,count = 173] [program = (A - B) * (B + A),res = 33,count = 94] [program = (A - B) * (A + B),res = 33,count = 77] [program = A * A - B * B,res = 33,count = 41] [program = (A + (A + B + A) + B + B) * (A / A),res = 33.0,count = 39] [program = (A + (A + B + A) + B + B) * (B / B),res = 33.0,count = 28] [program = (A - B) / A * ((A + B) * A),res = 33.0,count = 26] [program = (A / B * A - B) * B,res = 33.0,count = 19] [program = (A + B) * (A - B * B / B),res = 33.0,count = 16] [program = B + A + (A + (A + B) + B),res = 33,count = 12] [program = (A - B) * (A * ((A + B) / A)),res = 33.0,count = 10] [program = A / A * (A + (A + B + A) + B + B),res = 33.0,count = 4] [program = A + (A + B) + B + (B + A),res = 33,count = 3] [program = B + (B + (B + (A + A))) + A,res = 33,count = 3] [program = (A - B) / A * (A * (B + A)),res = 33.0,count = 3] [program = B / B * (A + (A + B + A) + B + B),res = 33.0,count = 2] [program = (A - (A - (A - B))) * (B + A),res = 33,count = 2] [program = (A + (A + B + A) + B + B) / (A / A),res = 33.0,count = 1] [program = (A + B) * A - B * (B + A),res = 33,count = 1] [program = A * (A * A / A) - (B - A + A) * B,res = 33.0,count = 1] [program = A - A + (A + (A + B + A) + B + B),res = 33,count = 1] [program = A - B * B + A + (B * A + A),res = 33,count = 1] [program = A + (A + B + A) + B + B + (A - A),res = 33,count = 1] [program = B * B / B * (A - B) + (A - B) * A,res = 33.0,count = 1] [program = (A + B) / B * (B + B + B),res = 33.0,count = 1] [program = (A + B) / B * (B * (A - B)),res = 33.0,count = 1] [program = B * B / B * (A / B * A - B),res = 33.0,count = 1] [program = (A / B * A - B) * (A * B / A),res = 33.0,count = 1] [program = (A - A + A + B) * (A - B),res = 33,count = 1] [program = (B + (A - A)) * (A / B * A - B),res = 33.0,count = 1] [program = (B + A) * (A - (A - (A - B))),res = 33,count = 1] resultMap = [33.0 = 20,33 = 15] */ data(a_puzzle,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [ [[9,6],45], [[8,5],39] ], Vars = ['A','B'], Unknown = [7,4], Ops = [+,*,-,/], % Constants = 0..9, Constants = [], Params = new_map([init_size=1000, num_gens=1000 ]), MaxSize = 11.