作者kamihane (也无风雨也无晴)
站内Programming
标题[问题] 一题Prolog
时间Fri Aug 15 18:25:40 2014
题目是 要将
http://www.brainbashers.com/showpuzzles.asp?puzzle=ZUYK
写成prolog让答案在输入solve(X)的时候可以拿到X =犯人
我知道这题的方法是判断次数,出现四次的statements就是答案了。
所以我写了这样:
solve(X) :-
member(X,[Alan,Brian,Charlie,Dave,Eddie,Freddie]),
(X = Alan -> (B=1,D=1,E=1);(B=0,D=0,E=0)),
(X = Brian -> (A=1,C=1);(A=0,C=0)),
(X = Charlie -> (B=1,D=1,E=1,F=1);(B=0,D=0,E=0,F=0)),
(X = Dave -> (A=1,E=1,F=1);(A=0,E=0,F=0)),
(X = Eddie -> (A=1,B=1,C=1);(A=0,B=0,C=0)),
(X = Freddie -> (C=1,D=1,E=1);(C=0,D=0,E=0)),
A+B+C+D+E+F=:=4.
但是他最後答案一直只有跑出false,有没有人可以帮忙解答呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 49.50.214.198
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Programming/M.1408098343.A.24C.html
1F:推 pika0923: BC两人的条件格式和其它人不一样耶 59.127.4.157 08/15 20:48
2F:→ pika0923: 有什麽特殊原因吗 59.127.4.157 08/15 20:48
3F:→ kamihane: 因为我是用如果A是犯人的话,则BDE说谎 49.50.214.198 08/16 08:16
4F:→ kamihane: 这个想法去写的,不知道是不是整个错了 49.50.214.198 08/16 08:16
5F:→ scwg: then 的部份是对的, 但是就算 X 不是 Alan, 128.36.232.45 08/16 08:33
6F:→ scwg: 还是不能确定 B=0: 如果 X=Charlie 呢? 128.36.232.45 08/16 08:33
7F:→ scwg: BTW, X=Alan 应该是 B=1,D=1,*F*=1 128.36.232.45 08/16 08:34
8F:→ kamihane: 好的,我等等在改改看@@" 130.216.30.119 08/16 09:57
9F:→ kamihane: else的部分要怎麽修正呢.. 130.216.30.119 08/16 10:01