/* Test of Collatz (Hailstone) function n n/2 (n is even) n 3n + 1 (n is odd) This is hard. * point seq Gen 6131 [program = if_then_else(A mod 2,1 + A * 3,A div 2),res = 34,count = 1] * make_seq n=2 gen = 220 [program = 1 div if_then_else(1,B,1) * (0 != A) + (A - 0) + (A + B) div B,res = 34,count = 1] gen 2528 [program = (B div B - (0 - A)) * (B + 1) div B,res = 34,count = 1] gen = 234 [program = ((A != 1 * (A mod A)) + A) div B + ((1 != 0 div (0 - B)) + A),res = 34,count = 1] gen = 1056 [program = 1 + A + (A + (A - 3 == (0 == 0))) div B,res = 34,count = 1] */ data(collatz,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Seq = [collatz(I) : I in 1..10], println(seq=Seq), ( % make_point_seq(Seq,Data,Unknown,Vars) % ; member(N,2..2), % println(n=N), make_seq(Seq,N,Data,Unknown,Vars) ), Ops = [+,*,-,div,mod,if_then_else,==,!=], Constants = 0..3,% ++ [random(-10,10) : _ in 1..10], MaxSize = 11, Params = new_map([init_size=500]). collatz(N) = N//2, N mod 2 == 0 => true. collatz(N) = 3*N+1 => true.