Re: [問題] 一題Prolog

看板Programming作者 (喲)時間9年前 (2014/08/17 21:23), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《kamihane (也無風雨也無晴)》之銘言: : 題目是 要將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,有沒有人可以幫忙解答呢? 邏輯上抓到重點,基本的式子是 theft('Alan') :- lie_on('Brian', 'Alan'), lie_on('Dave', 'Alan'), lie_on('Eddie', 'Alan'). 如果Brian說Alan不是賊是假的,Dave說Alan不是賊是假的,Eddie說Alan不是賊是假的, 那麼Alan就是賊。 剩下的程式問題,是最後要做A+B+C+D+E+F時,前面可能根本沒有A,B,C,D,E,或F變數, 無法加起來,所以都跑出false。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.167.142.126 ※ 文章網址: http://www.ptt.cc/bbs/Programming/M.1408281831.A.8A5.html
文章代碼(AID): #1JyApdYb (Programming)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1JyApdYb (Programming)