/* See nartoo_meon_planning*.pi for the planning problem. In https://groups.google.com/g/picat-lang/c/_yUOuRq-cis/m/qGOV9u84AQAJ Nartoo Meon asked about a planning problem. Here I check for the closed formula for the number of steps given (number of black, number of white) Here the output from a single run: [program = A * 1 + (//(9,9) + A) * B,res = 15,count = 92] [program = A + (//(9,9) + A) * B,res = 15,count = 90] [program = A * B + (B + A),res = 15,count = 89] [program = (//(9,9) + A) * B + A,res = 15,count = 88] [program = B * A + (B + A),res = 15,count = 55] [program = (//(9,9) + A) * B + (B - A + (A - B + A)),res = 15,count = 44] [program = (//(9,9) + A) * B + (//(//(B,B),3 + (5 - 3)) * B + A),res = 15,count = 39] [program = B * A + (A + B),res = 15,count = 35] [program = A * B + (A + B),res = 15,count = 34] [program = B - A + (A - B + A) + (//(9,9) + A) * B,res = 15,count = 30] [program = B + A + A * B,res = 15,count = 26] [program = (//(9,9) + A) * B + A * 1,res = 15,count = 16] [program = //(//(B,B),3 + (5 - 3)) * B + A + (//(9,9) + A) * B,res = 15,count = 15] [program = (//(9,9) + A) * B + (A - //(1,10)),res = 15,count = 12] [program = A - //(1,10) + (//(9,9) + A) * B,res = 15,count = 9] [program = B + A + B * A,res = 15,count = 4] [program = (//(9,9) + A) * B - (//(5,//(4 * B,3) + 8) - A),res = 15,count = 1] [program = (//(9,9) + A) * B - (B - (B + A)),res = 15,count = 1] [program = B + A + B * 1 * A,res = 15,count = 1] [program = A + B + B * A,res = 15,count = 1] [program = A + B + A * B,res = 15,count = 1] [program = (//(9,9) + A) * B + //(A,1),res = 15,count = 1] So it's simply A*B + A + B. Checking: Picat> foreach(B in 1..10, W in 1..10) println([B,W,(B*W+B+W)]) end [1,1,3] [1,2,5] [1,3,7] [1,4,9] [1,5,11] [1,6,13] [1,7,15] [1,8,17] [1,9,19] [1,10,21] [2,1,5] [2,2,8] [2,3,11] [2,4,14] [2,5,17] [2,6,20] [2,7,23] [2,8,26] [2,9,29] [2,10,32] [3,1,7] [3,2,11] [3,3,15] [3,4,19] [3,5,23] [3,6,27] [3,7,31] [3,8,35] [3,9,39] [3,10,43] [4,1,9] [4,2,14] [4,3,19] [4,4,24] [4,5,29] [4,6,34] [4,7,39] [4,8,44] [4,9,49] [4,10,54] [5,1,11] [5,2,17] [5,3,23] [5,4,29] [5,5,35] [5,6,41] [5,7,47] [5,8,53] [5,9,59] [5,10,65] [6,1,13] [6,2,20] [6,3,27] [6,4,34] [6,5,41] [6,6,48] [6,7,55] [6,8,62] [6,9,69] [6,10,76] [7,1,15] [7,2,23] [7,3,31] [7,4,39] [7,5,47] [7,6,55] [7,7,63] [7,8,71] [7,9,79] [7,10,87] [8,1,17] [8,2,26] [8,3,35] [8,4,44] [8,5,53] [8,6,62] [8,7,71] [8,8,80] [8,9,89] [8,10,98] [9,1,19] [9,2,29] [9,3,39] [9,4,49] [9,5,59] [9,6,69] [9,7,79] [9,8,89] [9,9,99] [9,10,109] [10,1,21] [10,2,32] [10,3,43] [10,4,54] [10,5,65] [10,6,76] [10,7,87] [10,8,98] [10,9,109] [10,10,120] Use this with http://hakank.org/picat/symbolic_regression.pi $ picat symbolic_regression.pi symbolic_regression_nartoo_meon_planning.pi */ data(facebook_puzzle,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [[[1,1],3], [[1,2],5], [[1,3],7], [[1,4],9], [[1,5],11], [[1,6],13], [[2,1],5], [[2,2],8], [[2,3],11], [[2,4],14], [[2,5],17], [[2,6],20], [[3,1],7], [[3,2],11], [[3,3],15], [[3,4],19], [[3,5],23], [[3,6],27], [[4,1],9], [[4,2],14], [[4,3],19], [[4,4],24], [[4,5],29], [[4,6],34], [[5,1],11], [[5,2],17], [[5,3],23], [[5,4],29], [[5,5],35], [[5,6],41], [[6,1],13], [[6,2],20], [[6,3],27], [[6,4],34], [[6,5],41], [[6,6],48]], Vars = ['A','B'], Unknown = [10,10], Ops = [+,*,//,-], Constants = 1..10, MaxSize = 15, Params = new_map([init_size=1000, num_gens=100 ]).