/* From my Eureqa model alternative_factorial.fxp a2 = factorial(1+n) - a1 AllGood: [program = factorial_restricted(N + 1) - A1,res = 48773618881154822981,count = 1] resultMap = [48773618881154822981 = 1] Note: factorial_restricted(N) gives 1 if N > 100 so it can give some strange looking results. AllGood: [program = factorial_restricted(N + factorial_restricted(factorial_restricted(9))) - A1,res = 48773618881154822981,count = 1] resultMap = [48773618881154822981 = 1] */ import util. data(alternate_factorial,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [ [[N,A1], A2] : [N,A1,A2] in chunks_of([ % n a1 a2 0,0,1, 1,1,1, 2,1,5, 3,5,19, 4,19,101, 5,101,619, 6,619,4421 % , % 7,4421,35899, % 8,35899,326981, % 9,326981,3301819, % 10,3301819,36614981, % 11,36614981,442386619, % 12,442386619,5784634181, % 13,5784634181,81393657019, % 14,81393657019,1226280710981, % 15,1226280710981,19696509177019, % 16,19696509177019,335990918918981, % 17,335990918918981,6066382786809019, % 18,6066382786809019,115578717622022981, % 19,115578717622022981,2317323290554617019, % 20,2317323290554617019,48773618881154822981 ],3)], Vars = ['N','A1'], Unknown = [20,2317323290554617019], % Unknown = [7,4421], Ops = [+,*,/,-,factorial_restricted], Constants = 1..10, MaxSize = 11, Params = new_map([init_size=1000, init_gen=1000 ]).