/* Leap year I first did an unlimited run with this result: gen = 48679 (time: 2601.414s) results_best = [[1,and(Year mod 200 != 100,Year mod 4 == (and(and(Year mod Year,16) == Year,20) - 50 == or(25,Year == (2 != 4))))]] % error: OUT OF MEMORY * stop_criteria=generations num_gens=1800 gen = 61 (time: 2.234s) results_best = [[2,and(Year != Year,and(Year == 8,100) + Year) == Year mod 4]] gen = 61 (time: 2.226s) results_best = [[2,Year mod 4 mod Year == 400 mod (40 != 80)]] gen = 1645 (time: 52.530s) results_best = [[2,1 == Year == Year mod (100 mod 8)]] gen = 506 (time: 15.671s) results_best = [[2,0 == Year mod 4]] */ data(leap_year,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [ [[Year], LeapYear] : Year in 1892..2028 ++ [1200,1600,1800,2000], LeapYear = cond(leap_year(Year),1,0)], % Ops = [*,+,-,/, mod,/\,\/,if_then_else,!=,==], % Ops = [*,+,-,/, mod,if_then_else,!=,==,<=], % Ops = [*,+,-,/, mod,if_then_else,!=,==,<=,and,or], Ops = [*,+,-,/,div,mod,!=,==,and,or], % Constants = 1..100, % [0,1,4,100,400], Constants = [0] ++ [I : I in 1..400, 400 mod I == 0], % Divisors of 400 Vars = ['Year'], Unknown = [2022], MaxSize = 41, Params = new_map([ % approx=0.49, init_size=500, % mutation_rate=0.25, % crossover_rate=0.9, show_best=1, num_gens=1800, % show_instances=true stop_criteria=generations ]). leap_year(Year) :- (Year mod 4 == 0, Year mod 100 != 0) ; Year mod 400 == 0. % From magicpopper/hakank/leap_year/exs.pl leapyear(1200). leapyear(1600). leapyear(1892). leapyear(1896). leapyear(1904). leapyear(1908). leapyear(1912). leapyear(1916). leapyear(1920). leapyear(1924). leapyear(1928). leapyear(1932). leapyear(1936). leapyear(1940). leapyear(1944). leapyear(1948). leapyear(1952). leapyear(1956). leapyear(1960). leapyear(1964). leapyear(1968). leapyear(1972). leapyear(1976). leapyear(1980). leapyear(1984). leapyear(1988). leapyear(1992). leapyear(1996). leapyear(2000). leapyear(2004). leapyear(2008). leapyear(2012). leapyear(2016). leapyear(2020). leapyear(2024). leapyear(2028).