「制約論理プログラミングその3」の編集履歴(バックアップ)一覧に戻る
test:- freeze(A,member(X,['喜','怒','哀','楽'])), freeze(A,member(X,['怒','哀','楽'])), freeze(A,member(X,['哀','楽'])), freeze(A,member(X,['楽'])), A = true, write(X). ||?-test. 楽 yes LOOP = 18
test:- freeze(A,member(X,['楽'])), freeze(A,member(X,['哀','楽'])), freeze(A,member(X,['怒','哀','楽'])), freeze(A,member(X,['喜','怒','哀','楽'])), A = true, write(X). ||?-test. 楽 yes LOOP = 12
constraint('期待','ワクワク'). constraint('苛立ち','イライラ'). constraint('驚き','ドキリ'). test:- S='ドキドキ', frees([(X,'期待'),(Y,'苛立ち'),(Z,'驚き')],T), func('期待',S,X), func('苛立ち',S,Y), func('驚き',S,Z), write(T). frees([],[]). frees([(A,N)|L],[B|S]):-freeze(A,constraint(N,B)),!,frees(L,S). func('期待' ,S,true):-member(S,['ワクワク','ドキドキ']). func('苛立ち',S,Y):-member(S,['イライラ','ムカムカ']). func('驚き' ,S,true):-member(S,['ドキドキ','ドキリ','ギクリ']). func(_,_,_).
||?-test. [ワクワク,B_49,ドキリ] yes LOOP = 22