DEMO
?- consult('crypto.pro').
% combosets.pro compiled 0.00 sec, 7,584 bytes
% crypto.pro compiled 0.00 sec, 10,688 bytes
Yes
?- crypto(1,2,3,A).
A = ex(1, +, 2) ;
No
?- crypto(1,2,3,6,A).
A = ex(ex(1, +, 2), +, 3) ;
A = ex(3, +, ex(1, +, 2)) ;
A = ex(3, *, ex(1, *, 2)) ;
A = ex(3, *, ex(2, /, 1)) ;
A = ex(1, +, ex(2, +, 3)) ;
A = ex(1, *, ex(2, *, 3)) ;
A = ex(ex(2, *, 3), /, 1) ;
A = ex(2, +, ex(1, +, 3)) ;
A = ex(2, *, ex(1, *, 3)) ;
A = ex(2, *, ex(3, /, 1)) ;
No
?- crypto(1,2,3,6,12,A).
A = ex(ex(1, +, 2), +, ex(3, +, 6)) ;
A = ex(3, +, ex(ex(1, +, 2), +, 6)) ;
A = ex(ex(1, +, 2), +, ex(6, +, 3)) ;
A = ex(3, +, ex(6, +, ex(1, +, 2))) ;
A = ex(ex(ex(1, +, 2), +, 3), +, 6) ;
A = ex(ex(3, +, ex(1, +, 2)), +, 6) ;
A = ex(6, +, ex(ex(1, +, 2), +, 3)) ;
A = ex(6, +, ex(3, +, ex(1, +, 2))) ;
A = ex(3, *, ex(6, -, ex(1, *, 2))) ;
A = ex(ex(3, *, ex(1, *, 2)), +, 6) ;
A = ex(6, +, ex(3, *, ex(1, *, 2))) ;
A = ex(6, *, ex(3, +, ex(1, -, 2))) ;
A = ex(6, *, ex(3, -, ex(2, -, 1))) ;
A = ex(3, *, ex(6, -, ex(2, /, 1))) ;
A = ex(ex(3, *, ex(2, /, 1)), +, 6) ;
A = ex(6, +, ex(3, *, ex(2, /, 1))) ;
A = ex(ex(1, +, 3), +, ex(2, +, 6)) ;
A = ex(ex(1, +, 3), *, ex(6, /, 2)) ;
A = ex(2, +, ex(6, +, ex(1, +, 3))) ;
A = ex(ex(6, *, ex(1, +, 3)), /, 2) ;
A = ex(ex(2, +, ex(1, +, 3)), +, 6) ;
A = ex(6, +, ex(2, +, ex(1, +, 3))) ;
A = ex(6, *, ex(ex(1, +, 3), -, 2)) ;
A = ex(6, *, ex(ex(1, +, 3), /, 2)) ;
A = ex(ex(1, *, 3), *, ex(6, -, 2)) ;
A = ex(ex(2, *, ex(1, *, 3)), +, 6) ;
A = ex(6, +, ex(2, *, ex(1, *, 3))) ;
A = ex(ex(3, /, 1), *, ex(6, -, 2)) ;
A = ex(ex(2, *, ex(3, /, 1)), +, 6) ;
A = ex(6, +, ex(2, *, ex(3, /, 1))) ;
A = ex(ex(1, +, 6), +, ex(2, +, 3)) ;
A = ex(2, +, ex(3, +, ex(1, +, 6))) ;
A = ex(3, +, ex(2, +, ex(1, +, 6))) ;
A = ex(ex(2, *, 3), +, ex(1, *, 6)) ;
A = ex(ex(1, *, 6), +, ex(2, *, 3)) ;
A = ex(3, *, ex(ex(1, *, 6), -, 2)) ;
A = ex(ex(2, *, 3), +, ex(6, /, 1)) ;
A = ex(ex(6, /, 1), +, ex(2, *, 3)) ;
A = ex(3, *, ex(ex(6, /, 1), -, 2)) ;
A = ex(ex(2, +, 3), +, ex(1, +, 6)) ;
A = ex(1, +, ex(6, +, ex(2, +, 3))) ;
A = ex(ex(1, +, ex(2, +, 3)), +, 6) ;
A = ex(6, +, ex(1, +, ex(2, +, 3))) ;
A = ex(ex(1, *, 6), +, ex(2, *, 3)) ;
A = ex(ex(1, *, ex(2, *, 3)), +, 6) ;
A = ex(ex(2, *, 3), +, ex(1, *, 6)) ;
A = ex(6, +, ex(1, *, ex(2, *, 3))) ;
A = ex(ex(6, /, 1), +, ex(2, *, 3)) ;
A = ex(ex(ex(2, *, 3), /, 1), +, 6) ;
A = ex(ex(2, *, 3), +, ex(6, /, 1)) ;
A = ex(6, +, ex(ex(2, *, 3), /, 1)) ;
A = ex(1, *, ex(ex(2, *, 3), +, 6)) ;
A = ex(1, *, ex(6, +, ex(2, *, 3))) ;
A = ex(ex(ex(2, *, 3), +, 6), /, 1) ;
A = ex(ex(6, +, ex(2, *, 3)), /, 1) ;
A = ex(ex(1, *, 6), +, ex(2, *, 3)) ;
A = ex(ex(1, *, ex(2, *, 3)), +, 6) ;
A = ex(ex(2, *, 3), +, ex(1, *, 6)) ;
A = ex(6, +, ex(1, *, ex(2, *, 3))) ;
A = ex(ex(6, /, 1), +, ex(2, *, 3)) ;
A = ex(ex(ex(2, *, 3), /, 1), +, 6) ;
A = ex(ex(2, *, 3), +, ex(6, /, 1)) ;
A = ex(6, +, ex(ex(2, *, 3), /, 1)) ;
A = ex(6, *, ex(1, -, ex(2, -, 3))) ;
A = ex(6, *, ex(ex(3, -, 2), +, 1)) ;
A = ex(6, *, ex(1, +, ex(3, -, 2))) ;
A = ex(ex(2, +, 6), +, ex(1, +, 3)) ;
A = ex(1, +, ex(3, +, ex(2, +, 6))) ;
A = ex(3, +, ex(1, +, ex(2, +, 6))) ;
A = ex(ex(6, -, 2), *, ex(1, *, 3)) ;
A = ex(ex(6, -, 2), *, ex(3, /, 1)) ;
A = ex(1, *, ex(3, *, ex(6, -, 2))) ;
A = ex(ex(3, *, ex(6, -, 2)), /, 1)
Yes
?- halt.
Tuesday, September 29, 2009
Crypto.pro Lab3 part 2
%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-%
% %
% FILE: crypto.pro in directory xsolve1. %
% TYPE: Prolog source code. %
% LINE: Crypto. %
% DATE: 09/29/2009. %
% %
%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-%
% Load of combosets.pro
:- consult('combosets.pro').
crypto(N1,N2,Goal,ex(N1,+,N2)) :-Goal is (N1 + N2).
crypto(N1,N2,Goal,ex(N1,*,N2)) :-Goal is (N1 * N2).
crypto(N1,N2,Goal,ex(N1,-,N2)) :-Goal is (N1 - N2).
crypto(N1,N2,Goal,ex(N2,-,N1)) :-Goal is (N2 - N1).
crypto(N1,N2,Goal,ex(N1,/,N2)) :-N2 > 0, Goal is (N1 / N2).
crypto(N1,N2,Goal,ex(N2,/,N1)) :-N1 > 0, Goal is (N2 / N1).
crypto( N1, N2, N3, G, Expr ) :-
combos( set(N1,N2,N3), combo(A,B), extra(C) ),
crypto( A, B, SG, SGE ),
crypto( C, SG, G, UGE ),
substitute( SGE, SG, UGE, Expr ).
crypto( N1, N2, N3, N4, G, Expr ) :-
combos( set(N1,N2,N3,N4), combo(A,B), extra(C,D) ),
crypto( A, B, SG, SGE ),
crypto( C, D, SG, G, UGE ),
substitute( SGE, SG, UGE, Expr ).
%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
% Key substitution code.
substitute( New, Old, ex( Old, O, Z ), ex( New, O, Z ) ).
substitute( New, Old, ex( X, O, Old ), ex( X, O, New ) ).
substitute( New, Old, ex( X, O, Z ), ex( Q, O, Z) ) :-
substitute( New, Old, X, Q ).
substitute( New, Old, ex( X, O, Z), ex(X, O, Q ) ) :-
substitute( New, Old, Z, Q ).
% %
% FILE: crypto.pro in directory xsolve1. %
% TYPE: Prolog source code. %
% LINE: Crypto. %
% DATE: 09/29/2009. %
% %
%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-%
% Load of combosets.pro
:- consult('combosets.pro').
crypto(N1,N2,Goal,ex(N1,+,N2)) :-Goal is (N1 + N2).
crypto(N1,N2,Goal,ex(N1,*,N2)) :-Goal is (N1 * N2).
crypto(N1,N2,Goal,ex(N1,-,N2)) :-Goal is (N1 - N2).
crypto(N1,N2,Goal,ex(N2,-,N1)) :-Goal is (N2 - N1).
crypto(N1,N2,Goal,ex(N1,/,N2)) :-N2 > 0, Goal is (N1 / N2).
crypto(N1,N2,Goal,ex(N2,/,N1)) :-N1 > 0, Goal is (N2 / N1).
crypto( N1, N2, N3, G, Expr ) :-
combos( set(N1,N2,N3), combo(A,B), extra(C) ),
crypto( A, B, SG, SGE ),
crypto( C, SG, G, UGE ),
substitute( SGE, SG, UGE, Expr ).
crypto( N1, N2, N3, N4, G, Expr ) :-
combos( set(N1,N2,N3,N4), combo(A,B), extra(C,D) ),
crypto( A, B, SG, SGE ),
crypto( C, D, SG, G, UGE ),
substitute( SGE, SG, UGE, Expr ).
%-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
% Key substitution code.
substitute( New, Old, ex( Old, O, Z ), ex( New, O, Z ) ).
substitute( New, Old, ex( X, O, Old ), ex( X, O, New ) ).
substitute( New, Old, ex( X, O, Z ), ex( Q, O, Z) ) :-
substitute( New, Old, X, Q ).
substitute( New, Old, ex( X, O, Z), ex(X, O, Q ) ) :-
substitute( New, Old, Z, Q ).
Demo combosets.pro
DEMO
?- consult('combosets.pro').
% combosets.pro compiled 0.00 sec, 7,432 bytes
Yes
?- combos(set(a,b,c),C,X).
C = combo(a, b)
X = extra(c) ;
C = combo(b, c)
X = extra(a) ;
C = combo(a, c)
X = extra(b) ;
No
?- combos(set(1,2,3,7),C,X).
C = combo(1, 2)
X = extras(3, 7) ;
C = combo(1, 3)
X = extras(2, 7) ;
C = combo(1, 7)
X = extras(2, 3) ;
C = combo(2, 3)
X = extras(1, 7) ;
C = combo(2, 7)
X = extras(1, 3) ;
C = combo(3, 7)
X = extras(1, 2) ;
No
?- combos(set(12,2,4,6),C,X).
C = combo(12, 2)
X = extras(4, 6) ;
C = combo(12, 4)
X = extras(2, 6) ;
C = combo(12, 6)
X = extras(2, 4) ;
C = combo(2, 4)
X = extras(12, 6) ;
C = combo(2, 6)
X = extras(12, 4) ;
C = combo(4, 6)
X = extras(12, 2) ;
No
?-halt.
?- consult('combosets.pro').
% combosets.pro compiled 0.00 sec, 7,432 bytes
Yes
?- combos(set(a,b,c),C,X).
C = combo(a, b)
X = extra(c) ;
C = combo(b, c)
X = extra(a) ;
C = combo(a, c)
X = extra(b) ;
No
?- combos(set(1,2,3,7),C,X).
C = combo(1, 2)
X = extras(3, 7) ;
C = combo(1, 3)
X = extras(2, 7) ;
C = combo(1, 7)
X = extras(2, 3) ;
C = combo(2, 3)
X = extras(1, 7) ;
C = combo(2, 7)
X = extras(1, 3) ;
C = combo(3, 7)
X = extras(1, 2) ;
No
?- combos(set(12,2,4,6),C,X).
C = combo(12, 2)
X = extras(4, 6) ;
C = combo(12, 4)
X = extras(2, 6) ;
C = combo(12, 6)
X = extras(2, 4) ;
C = combo(2, 4)
X = extras(12, 6) ;
C = combo(2, 6)
X = extras(12, 4) ;
C = combo(4, 6)
X = extras(12, 2) ;
No
?-halt.
Combosets.pro
% FILE: combosets.pro
% TYPE: Prolog source
% LINE: a bit of combinatorial set code
% DATE: November, 1995
%-----------------------------------------------------------------
% combination procedures
combos( set(N1,N2,N3), combo(N1,N2), extra(N3) ).
combos( set(N1,N2,N3), combo(N2,N3), extra(N1) ).
combos( set(N1,N2,N3), combo(N1,N3), extra(N2) ).
combos( set(N1,N2,N3,N4), combo(N1,N2), extras(N3,N4) ).
combos( set(N1,N2,N3,N4), combo(N1,N3), extras(N2,N4) ).
combos( set(N1,N2,N3,N4), combo(N1,N4), extras(N2,N3) ).
combos( set(N1,N2,N3,N4), combo(N2,N3), extras(N1,N4) ).
combos( set(N1,N2,N3,N4), combo(N2,N4), extras(N1,N3) ).
combos( set(N1,N2,N3,N4), combo(N3,N4), extras(N1,N2) ).
combos( set(N1,N2,N3,N4,N5), combo(N1,N2), extras(N3,N4,N5) ).
combos( set(N1,N2,N3,N4,N5), combo(N1,N3), extras(N2,N4,N5) ).
combos( set(N1,N2,N3,N4,N5), combo(N1,N4), extras(N2,N3,N5) ).
combos( set(N1,N2,N3,N4,N5), combo(N1,N5), extras(N2,N3,N4) ).
combos( set(N1,N2,N3,N4,N5), combo(N2,N3), extras(N1,N4,N5) ).
combos( set(N1,N2,N3,N4,N5), combo(N2,N4), extras(N1,N3,N5) ).
combos( set(N1,N2,N3,N4,N5), combo(N2,N5), extras(N1,N3,N4) ).
combos( set(N1,N2,N3,N4,N5), combo(N3,N4), extras(N1,N2,N5) ).
combos( set(N1,N2,N3,N4,N5), combo(N3,N5), extras(N1,N2,N4) ).
combos( set(N1,N2,N3,N4,N5), combo(N4,N5), extras(N1,N2,N3) ).
%-----------------------------------------------------------------
% the permutation facts
perm(s(A,B),p(A,B)).
perm(s(A,B),p(B,A)).
perm(s(A,B,C),p(A,X,Y)) :- perm(s(B,C),p(X,Y)).
perm(s(A,B,C),p(B,X,Y)) :- perm(s(A,C),p(X,Y)).
perm(s(A,B,C),p(C,X,Y)) :- perm(s(A,B),p(X,Y)).
perm(s(A,B,C,D),p(A,X,Y,Z)) :- perm(s(B,C,D),p(X,Y,Z)).
perm(s(A,B,C,D),p(B,X,Y,Z)) :- perm(s(A,C,D),p(X,Y,Z)).
perm(s(A,B,C,D),p(C,X,Y,Z)) :- perm(s(A,B,D),p(X,Y,Z)).
perm(s(A,B,C,D),p(D,X,Y,Z)) :- perm(s(A,B,C),p(X,Y,Z)).
perm(s(A,B,C,D,E),p(A,X,Y,Z,W)) :- perm(s(B,C,D,E),p(X,Y,Z,W)).
perm(s(A,B,C,D,E),p(B,X,Y,Z,W)) :- perm(s(A,C,D,E),p(X,Y,Z,W)).
perm(s(A,B,C,D,E),p(C,X,Y,Z,W)) :- perm(s(B,A,D,E),p(X,Y,Z,W)).
perm(s(A,B,C,D,E),p(D,X,Y,Z,W)) :- perm(s(B,C,A,E),p(X,Y,Z,W)).
perm(s(A,B,C,D,E),p(E,X,Y,Z,W)) :- perm(s(B,C,D,A),p(X,Y,Z,W)).
% TYPE: Prolog source
% LINE: a bit of combinatorial set code
% DATE: November, 1995
%-----------------------------------------------------------------
% combination procedures
combos( set(N1,N2,N3), combo(N1,N2), extra(N3) ).
combos( set(N1,N2,N3), combo(N2,N3), extra(N1) ).
combos( set(N1,N2,N3), combo(N1,N3), extra(N2) ).
combos( set(N1,N2,N3,N4), combo(N1,N2), extras(N3,N4) ).
combos( set(N1,N2,N3,N4), combo(N1,N3), extras(N2,N4) ).
combos( set(N1,N2,N3,N4), combo(N1,N4), extras(N2,N3) ).
combos( set(N1,N2,N3,N4), combo(N2,N3), extras(N1,N4) ).
combos( set(N1,N2,N3,N4), combo(N2,N4), extras(N1,N3) ).
combos( set(N1,N2,N3,N4), combo(N3,N4), extras(N1,N2) ).
combos( set(N1,N2,N3,N4,N5), combo(N1,N2), extras(N3,N4,N5) ).
combos( set(N1,N2,N3,N4,N5), combo(N1,N3), extras(N2,N4,N5) ).
combos( set(N1,N2,N3,N4,N5), combo(N1,N4), extras(N2,N3,N5) ).
combos( set(N1,N2,N3,N4,N5), combo(N1,N5), extras(N2,N3,N4) ).
combos( set(N1,N2,N3,N4,N5), combo(N2,N3), extras(N1,N4,N5) ).
combos( set(N1,N2,N3,N4,N5), combo(N2,N4), extras(N1,N3,N5) ).
combos( set(N1,N2,N3,N4,N5), combo(N2,N5), extras(N1,N3,N4) ).
combos( set(N1,N2,N3,N4,N5), combo(N3,N4), extras(N1,N2,N5) ).
combos( set(N1,N2,N3,N4,N5), combo(N3,N5), extras(N1,N2,N4) ).
combos( set(N1,N2,N3,N4,N5), combo(N4,N5), extras(N1,N2,N3) ).
%-----------------------------------------------------------------
% the permutation facts
perm(s(A,B),p(A,B)).
perm(s(A,B),p(B,A)).
perm(s(A,B,C),p(A,X,Y)) :- perm(s(B,C),p(X,Y)).
perm(s(A,B,C),p(B,X,Y)) :- perm(s(A,C),p(X,Y)).
perm(s(A,B,C),p(C,X,Y)) :- perm(s(A,B),p(X,Y)).
perm(s(A,B,C,D),p(A,X,Y,Z)) :- perm(s(B,C,D),p(X,Y,Z)).
perm(s(A,B,C,D),p(B,X,Y,Z)) :- perm(s(A,C,D),p(X,Y,Z)).
perm(s(A,B,C,D),p(C,X,Y,Z)) :- perm(s(A,B,D),p(X,Y,Z)).
perm(s(A,B,C,D),p(D,X,Y,Z)) :- perm(s(A,B,C),p(X,Y,Z)).
perm(s(A,B,C,D,E),p(A,X,Y,Z,W)) :- perm(s(B,C,D,E),p(X,Y,Z,W)).
perm(s(A,B,C,D,E),p(B,X,Y,Z,W)) :- perm(s(A,C,D,E),p(X,Y,Z,W)).
perm(s(A,B,C,D,E),p(C,X,Y,Z,W)) :- perm(s(B,A,D,E),p(X,Y,Z,W)).
perm(s(A,B,C,D,E),p(D,X,Y,Z,W)) :- perm(s(B,C,A,E),p(X,Y,Z,W)).
perm(s(A,B,C,D,E),p(E,X,Y,Z,W)) :- perm(s(B,C,D,A),p(X,Y,Z,W)).
Thursday, September 24, 2009
Demo crypto.pro Lab 2
DEMO.
Welcome to SWI-Prolog (Multi-threaded, Version 5.6.24)
Copyright (c) 1990-2006 University of Amsterdam.
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.
For help, use ?- help(Topic). or ?- apropos(Word).
?- consult('crypto.pro').
% gv.pro compiled 0.00 sec, 2,544 bytes
% crypto.pro compiled 0.00 sec, 5,528 bytes
Yes
?- eCryptoP.
Yes
?- gRNumber(N).
N = 2 ;
No
?- gRProblem.
Yes
?- gRProblem.
Yes
?- gRProblem.
Yes
?- gRProblem.
Yes
?- gRProblem.
Yes
?- gRProblem.
Yes
?- gRProblem.
Yes
?- gRProblem.
Yes
?- gRProblem.
Yes
?- gRProblem.
Yes
?- demo.
Crypto Problem: Numbers = { 10, 5, 0, 14, 14} Goal = 8
Crypto Problem: Numbers = { 2, 0, 11, 1, 8} Goal = 13
Crypto Problem: Numbers = { 6, 0, 5, 1, 7} Goal = 0
Crypto Problem: Numbers = { 8, 8, 6, 4, 14} Goal = 3
Crypto Problem: Numbers = { 12, 2, 8, 10, 6} Goal = 4
Crypto Problem: Numbers = { 13, 11, 13, 11, 10} Goal = 12
Crypto Problem: Numbers = { 4, 9, 5, 11, 1} Goal = 7
Crypto Problem: Numbers = { 13, 8, 12, 15, 3} Goal = 13
Crypto Problem: Numbers = { 6, 5, 12, 0, 2} Goal = 3
Crypto Problem: Numbers = { 6, 9, 13, 0, 2} Goal = 14
No
?- halt.
Friday, September 18, 2009
crypto.pro
%----------------------------------------------------------------------------
% Jeremey Ferris Cog 366 Lab #2 Random Crypto Problem Generator
% Filename: crytpo.pro
% Load Files: gv.pro
% Date Created: 09/16/2009
%-----------------------------------------------------------------------------
:-consult('gv.pro').
eCryptoP:-
declare(a,0),
declare(b,15).
gRNumber(N):-
valueOf(a,Lo),
valueOf(b,Hi),
Hip is Hi+1,
random(Lo,Hip,N).
gRProblem:-
gRNumber(N1),
gRNumber(N2),
gRNumber(N3),
gRNumber(N4),
gRNumber(N5),
gRNumber(G),
addProbToKB(N1,N2,N3,N4,N5,G).
addProbToKB(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))).
addProbToKB(N1,N2,N3,N4,N5,G):-
assert(problem(numbers(N1,N2,N3,N4,N5),goal(G))).
demo:-
problem(numbers(N1,N2,N3,N4,N5),goal(G)),
write('Crypto Problem: Numbers = { '),
write(N1), write(', '),
write(N2), write(', '),
write(N3), write(', '),
write(N4), write(', '),
write(N5), write('} Goal = '),
write(G),nl,fail.
eCryptoP.
% Jeremey Ferris Cog 366 Lab #2 Random Crypto Problem Generator
% Filename: crytpo.pro
% Load Files: gv.pro
% Date Created: 09/16/2009
%-----------------------------------------------------------------------------
:-consult('gv.pro').
eCryptoP:-
declare(a,0),
declare(b,15).
gRNumber(N):-
valueOf(a,Lo),
valueOf(b,Hi),
Hip is Hi+1,
random(Lo,Hip,N).
gRProblem:-
gRNumber(N1),
gRNumber(N2),
gRNumber(N3),
gRNumber(N4),
gRNumber(N5),
gRNumber(G),
addProbToKB(N1,N2,N3,N4,N5,G).
addProbToKB(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))).
addProbToKB(N1,N2,N3,N4,N5,G):-
assert(problem(numbers(N1,N2,N3,N4,N5),goal(G))).
demo:-
problem(numbers(N1,N2,N3,N4,N5),goal(G)),
write('Crypto Problem: Numbers = { '),
write(N1), write(', '),
write(N2), write(', '),
write(N3), write(', '),
write(N4), write(', '),
write(N5), write('} Goal = '),
write(G),nl,fail.
eCryptoP.
Subscribe to:
Posts (Atom)
