You selected amonkey1.pl
/* monkey-banana: Newell-Simon's GPS with simple NLP */
% 参照:I. Batko,「AIプログラミング」(安部・田中訳),近代科学社, 2.5節.
% file: amonkey1.pl
% created: 1998.10.13.Tue by K.INDO
% modified: 29 Oct 2002. the program augmented with a simple NLP (natural language processing) in Japanese.
% modified: 200.1.17 unicode version
% 猿の4動作--grasp(掴む), climb(箱の上に登る), push(箱を押す), walk(歩く)
move(state( middle, onbox, middle, has_nothing),
grasp, state(middle, onbox, middle, has_a_banana)).
move(S1,climb,S2):-
S1=state(P, onfloor, P, H), S1,
S2=state(P, onbox, P, H), S2.
move(S1, push( P1,P2), S2):-
S1=state( P1, onfloor, P1, H), S1,
S2=state( P2, onfloor, P2, H), P2\=P1, S2.
move(S1, walk( P1,P2), S2):-
S1=state( P1, onfloor, B, H), S1,
S2=state( P2, onfloor, B, H), P2\=P1, S2.
% 猿の計画立案
canget(Goal):- Goal=state( _,_,_, has_a_banana),Goal.
canget(S):- canget(S1),move(S,_Move, S1).
% 状態
initial_state(state(atdoor, onfloor, atwindow, has_nothing)).
state(A, B, C, D):-
member(A,[atdoor,middle,atwindow]),
member(B,[onfloor,onbox]),
member(C,[atdoor,middle,atwindow]),
member(D,[has_nothing,has_a_banana]).
% 猿の計画立案2
planget(Goal,[[Goal,satisfied]]):- Goal=state( _,_,_, has_a_banana),Goal.
planget(S,[[S,M]|P]):- planget(S1,P),move(S,M, S1),S,\+member([S1,M],P).
% 計画書き出し
wp(Plan):-
forall(nth1(K,Plan,P),
(
write('時刻'(K)),nl,wa(P),nl
)
).
wa([state(X,Y,Z,W),Move]):-
'辞書'(monkey,A,'名詞','動作主体'),
'辞書'(X,P,'名詞','位置'('水平方向')),
'辞書'(Y,Q,'名詞','位置'('垂直方向')),
'辞書'(W,State,'動詞','状態'),
tab(3),write(A-'は'-P-Q-'において'-State),nl,
'辞書'(box,B,'名詞','道具'),
'辞書'(Z,R,'名詞','位置'('水平方向')),
tab(3),write(B-'は'-R-'にある。'),nl,
'辞書'(Move,Action,'動詞'),
tab(3),write(A-'が'-Action),nl.
/* NLP part */
% 動詞辞書
'辞書'(satisfied,'バナナを食べている。','動詞').
'辞書'(grasp,'バナナを掴む。','動詞').
'辞書'(climb,'箱の上に登る。','動詞').
'辞書'(push(X,Y),X1-'から'-Y1-'まで箱を押す。','動詞'):-
'辞書'(X,X1,'名詞','位置'('水平方向')),
'辞書'(Y,Y1,'名詞','位置'('水平方向')).
'辞書'(walk(X,Y),X1-'から'-Y1-'まで歩く。','動詞'):-
'辞書'(X,X1,'名詞','位置'('水平方向')),
'辞書'(Y,Y1,'名詞','位置'('水平方向')).
% 名詞辞書
'辞書'(monkey,'猿','名詞','動作主体').
'辞書'(box,'箱','名詞','道具').
'辞書'(banana,'バナナ','名詞','目標').
% 名詞辞書(位置)
'辞書'(atwindow,'窓際','名詞','位置'('水平方向')).
'辞書'(atdoor,'ドアの近く','名詞','位置'('水平方向')).
'辞書'(middle,'部屋の中央','名詞','位置'('水平方向')).
'辞書'(onfloor,'床の上','名詞','位置'('垂直方向')).
'辞書'(onbox,'箱の上','名詞','位置'('垂直方向')).
% 動詞辞書(状態)
'辞書'(has_nothing,'何も持っていない。','動詞','状態').
'辞書'(has_a_banana,'バナナを持っている。','動詞','状態').
return to front page.