- 89 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 15:33:59 ]
- prolog で解いてみた。いろいろ微妙。
xor( A, B ) :- A -> ¥+B ; B. truth(Is) :- Is = [ [rabbit, g], [hatman, n], [yamane, n] ] ; Is = [ [rabbit, n], [hatman, g], [yamane, n] ] ; Is = [ [rabbit, n], [hatman, n], [yamane, g] ] . rabbit_says(Is) :- truth(Is), member( [rabbit, n], Is ). hatman_says(Is) :- truth(Is), member( [hatman, n], Is ). yamane_says(Is) :- xor( rabbit_says(Is), hatman_says(Is) ). more_research(Is) :- xor( rabbit_says(Is), yamane_says(Is) ). solve(It) :- truth(It), yamane_says(It), more_research(It). ?- findall(It, solve(It), All). All = [[[rabbit, g], [hatman, n], [yamane, n]]].
|

|