% File: crypto_problems.pro % Implementation of a crypto problem generator :- consult('./gv.pro'). % Main Functionality establish_crypto_problem_parameters :- declare(lo, 0), declare(hi, 9). :- establish_crypto_problem_parameters. display_problem :- value_of(crypto_problem, problem(numbers(N1,N2,N3,N4,N5), goal(G))), write("Problem : numbers = {"), write(N1), write(", "), write(N2), write(", "), write(N3), write(", "), write(N4), write(", "), write(N5), write("} and goal = "), write(G), nl. generate_random_number(R) :- value_of(hi, Hi), value_of(lo, Lo), HiPlus1 is Hi + 1, random(Lo, HiPlus1, R). generate_random_crypto_problem :- undeclare(crypto_problem), fail. generate_random_crypto_problem :- generate_random_number(N1), generate_random_number(N2), generate_random_number(N3), generate_random_number(N4), generate_random_number(N5), generate_random_number(G), add_crypto_problem_to_KB(N1,N2,N3,N4,N5,G). add_crypto_problem_to_KB(N1,N2,N3,N4,N5,G) :- undeclare(crypto_problem), declare(crypto_problem, problem(numbers(N1,N2,N3,N4,N5), goal(G))). add_crypto_problem_to_KB(N1,N2,N3,N4,N5,G) :- declare(crypto_problem, problem(numbers(N1,N2,N3,N4,N5), goal(G))). generate_one :- generate_random_crypto_problem, display_problem. generate(1) :- generate_one. generate(N) :- generate(1), NM1 is N - 1, generate(NM1).