:- consult('gv.pro'). establishCryptoProblemParameters :- declare(lo,0), declare(hi,15). generateRandomCryptoNumber(N) :- valueOf(lo,Lo), valueOf(hi,Hi), Hip is Hi + 1, random(Lo,Hip,N). generateRandomCryptoProblem :- generateRandomCryptoNumber(N1), generateRandomCryptoNumber(N2), generateRandomCryptoNumber(N3), generateRandomCryptoNumber(N4), generateRandomCryptoNumber(N5), generateRandomCryptoNumber(G), addProblemToKB(N1,N2,N3,N4,N5,G). gRCP10 :- generateRandomCryptoProblem, generateRandomCryptoProblem, generateRandomCryptoProblem, generateRandomCryptoProblem, generateRandomCryptoProblem, generateRandomCryptoProblem, generateRandomCryptoProblem, generateRandomCryptoProblem, generateRandomCryptoProblem, generateRandomCryptoProblem. addProblemToKB(N1,N2,N3,N4,N5,G) :- retract(problem(numbers(N1,N2,N3,N4,N5),goal(G))), assert(problem(numbers(N1,N2,N3,N4,N5),goal(G))), generateRandomCryptoProblem. addProblemToKB(N1,N2,N3,N4,N5,G) :- assert(problem(numbers(N1,N2,N3,N4,N5),goal(G))). displayProblem :- problem(numbers(N1,N2,N3,N4,N5),goal(G)), retract(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(' } goal = '), write(G),nl,fail. displayProblem. demo :- generateRandomCryptoProblem, displayProblem. demoRec(0) :- displayProblem. demoRec(N) :- N1 is N - 1, generateRandomCryptoProblem, demoRec(N1). :- establishCryptoProblemParameters.