プログラム断片(2008/06/02)
for VisualWorks 7.6 with Jun780, Prologインタプリタのマニュアル(PDF)
?- remove.
tree([hen,cat,dog]).
?- clear, listing.
?- tree(X).
?- tree([A|D]).
?- tree([A,B|D]).
?- tree([A,B,C|D]).
?- tree([A|[B|[C|D]]]).
?- tree([A,B,C]).
 |
tree([hen,cat,dog]).
yes
?- tree(X).
X = [hen,cat,dog] ;
no
?- tree([A|D]).
A = hen ,
D = [cat,dog] ;
no
?- tree([A,B|D]).
A = hen ,
B = cat ,
D = [dog] ;
no
?- tree([A,B,C|D]).
A = hen ,
B = cat ,
C = dog ,
D = [] ;
no
?- tree([A,B,C|D]).
A = hen ,
B = cat ,
C = dog ,
D = [] ;
no
?- tree([A,B,C]).
A = hen ,
B = cat ,
C = dog ;
no
|
|
?- remove.
car([A|D],A).
car([],[]).
?- clear, listing.
?- car([1,2,3],1).
?- car([],[]).
?- car([1,2,3],X).
?- car([],X).
?- car([X,2,3],1).
?- car(a,X).
?- car(123,X).
 |
car([A|D],A).
car([],[]).
yes
?- car([1,2,3],1).
yes
?- car([],[]).
yes
?- car([1,2,3],X).
X = 1 ;
no
?- car([],X).
X = [] ;
no
?- car([X,2,3],1).
X = 1 ;
no
?- car(a,X).
no
?- car(123,X).
no
|
|
?- remove.
cdr([A|D],D).
cdr([],[]).
?- clear, listing.
?- cdr([1,2,3],[2,3]).
?- cdr([],[]).
?- cdr([1,2,3],X).
?- cdr([],X).
?- cdr([1|X],[2,3]).
?- cdr(a,X).
?- cdr(123,X).
 |
cdr([A|D],D).
cdr([],[]).
yes
?- cdr([1,2,3],[2,3]).
yes
?- cdr([],[]).
yes
?- cdr([1,2,3],X).
X = [2,3] ;
no
?- cdr([],X).
X = [] ;
no
?- cdr([1|X],[2,3]).
X = [2,3] ;
no
?- cdr(a,X).
no
?- cdr(123,X).
no
|
|
?- remove.
?- clear, listing.
?- =(X,[A,B,6]), =(A,[1|2]), =(B,[C|5]), =(C,[3,4]).
 |
yes
?- =(X,[A,B,6]), =(A,[1|2]), =(B,[C|5]), =(C,[3,4]).
A = [1|2] ,
B = [[3,4]|5] ,
C = [3,4] ,
X = [[1|2],[[3,4]|5],6] ;
no
|
|
?- remove.
tree(A) :-
=(A,[B,c,d,E]),
=(B,[F,g,H]),
=(E,[I,J]),
=(F,[k,L]),
=(H,[m]),
=(I,[n]),
=(J,[o,P,q]),
=(L,[r,s,t,u]),
=(P,[v,w,x,y,z]).
?- clear, listing.
?- tree([[[k,L],g,[m]],c,d,[[n],[o,P,q]]]).
?- tree([[F,g,H],c,d,[I,J]]).
?- tree([B,c,d,E]).
?- tree(A).
 |
tree(A) :-
=(A,[B,c,d,E]),
=(B,[F,g,H]),
=(E,[I,J]),
=(F,[k,L]),
=(H,[m]),
=(I,[n]),
=(J,[o,P,q]),
=(L,[r,s,t,u]),
=(P,[v,w,x,y,z]).
yes
?- tree([[[k,L],g,[m]],c,d,[[n],[o,P,q]]]).
L = [r,s,t,u] ,
P = [v,w,x,y,z] ;
no
?- tree([[F,g,H],c,d,[I,J]]).
F = [k,[r,s,t,u]] ,
H = [m] ,
I = [n] ,
J = [o,[v,w,x,y,z],q] ;
no
?- tree([B,c,d,E]).
B = [[k,[r,s,t,u]],g,[m]] ,
E = [[n],[o,[v,w,x,y,z],q]] ;
no
?- tree(A).
A = [[[k,[r,s,t,u]],g,[m]],c,d,[[n],[o,[v,w,x,y,z],q]]] ;
no
|
|
?- remove.
likes(john, apple).
likes(john, wine).
likes(john, mary).
likes(mary, wine).
likes(mary, john).
?- clear, listing.
?- likes(X,Y).
?- likes(X,~).
?- likes(~,Y).
?- likes(X,~), write(X), nl, fail.
?- likes(~,Y), write(Y), nl, fail.
 |
likes(john,apple).
likes(john,wine).
likes(john,mary).
likes(mary,wine).
likes(mary,john).
yes
?- likes(X,Y).
X = john ,
Y = apple ;
X = john ,
Y = wine ;
X = john ,
Y = mary ;
X = mary ,
Y = wine ;
X = mary ,
Y = john ;
no
?- likes(X,~).
X = john ;
X = john ;
X = john ;
X = mary ;
X = mary ;
no
?- likes(~,Y).
Y = apple ;
Y = wine ;
Y = mary ;
Y = wine ;
Y = john ;
no
?- likes(X,~), write(X), nl, fail.
john
john
john
mary
mary
no
?- likes(~,Y), write(Y), nl, fail.
apple
wine
mary
wine
john
no
|
|
?- remove.
includes([X|~],X).
includes([~|Y],X) :- includes(Y,X).
?- clear, listing.
?- includes([hen,cat,dog,donkey],hen).
?- includes([hen,cat,dog,donkey],cat).
?- includes([hen,cat,dog,donkey],monkey).
?- includes([hen,cat,dog,donkey],X).
?- includes(X,dog).
 |
includes([X|~],X).
includes([~|Y],X) :-
includes(Y,X).
yes
?- includes([hen,cat,dog,donkey],hen).
yes
?- includes([hen,cat,dog,donkey],cat).
yes
?- includes([hen,cat,dog,donkey],monkey).
no
?- includes([hen,cat,dog,donkey],X).
X = hen ;
X = cat ;
X = dog ;
X = donkey ;
no
?- includes(X,dog).
X = [dog|~] ;
X = [~,dog|~] ;
X = [~,~,dog|~] ;
X = [~,~,~,dog|~] ;
X = [~,~,~,~,dog|~] ;
X = [~,~,~,~,~,dog|~] ;
X = [~,~,~,~,~,~,dog|~] ;
X = [~,~,~,~,~,~,~,dog|~] ;
X = [~,~,~,~,~,~,~,~,dog|~] ;
X = [~,~,~,~,~,~,~,~,~,dog|~]
yes
|
|
?-remove.
hanoi(N) :-
hanoi(N,left,right,center).
hanoi(1,X,Y,Z) :-
move(1,X,Y).
hanoi(N,X,Y,Z) :-
作成してください.
move(N,X,Y) :-
write("move disc-"),
write(N),
write(" from "),
write(X),
write(" to "),
write(Y),
nl.
?- clear, listing.
?- hanoi(3).
 |
hanoi(N) :-
hanoi(N,left,right,center).
hanoi(1,X,Y,Z) :-
move(1,X,Y).
hanoi(N,X,Y,Z) :-
作成してください.
move(N,X,Y) :-
write("move disc-"),
write(N),
write(" from "),
write(X),
write(" to "),
write(Y),
nl.
yes
?- hanoi(3).
move disc-1 from left to right
move disc-2 from left to center
move disc-1 from right to center
move disc-3 from left to right
move disc-1 from center to left
move disc-2 from center to right
move disc-1 from left to right
yes
|
|
for VisualWorks 7.6 with Jun780, Prologインタプリタのマニュアル(PDF)
Updated: 2015/11/08 (Created: 2008/06/02)
