私はPrologを使用してアインシュタインの謎を解こうとしています。私が家(Hs)で走ってみると、いいえ。タスクはEinstein Riddle using Prolog
- 赤い家に住んでいます。
- スウェーデンはペットとして犬を飼っています。
- デーンはお茶を飲みます。
- 緑の家は白い家のすぐ左です。
- グリーンハウスのオーナーはコーヒーを飲みます。
- ポールモールを吸うオーナーは鳥を飼育します。
- イエローハウスの所有者がダンヒルを吸う。
- センターハウスに住むオーナーはミルクを飲みます。
- ノルウェー人は最初の家に住んでいます。
- 煙を吸うオーナーは、猫を飼っている人の隣に住んでいます。
- ダンヒルを吸う人の隣に馬を飼っている所有者がいる。
- Bluemastersを吸うオーナーはビールを飲みます。
- ドイツのスモークプリンス。
- ノルウェー人は、青い家の隣に住んでいます。
- 喫煙者は水を飲む人の隣に息を吹き込みます。
houses(Hs) :- length(Hs, 5), member(h(english,_,_,_,red), Hs), member(h(swede,dog,_,_,_), Hs), member(h(_,_,_,coffee,green), Hs), member(h(dane,_,_,tea,_), Hs), next(h(_,_,_,_,green), h(_,_,_,_,white), Hs), member(h(_,bird,'Pall Mall',_,_), Hs), member(h(_,_,'Dunhill',_,yellow), Hs), Hs = [_,_,h(_,_,_,milk,_),_,_], Hs = [h(norwegian,_,_,_,_)|_], next(h(_,horse,_,_,_), h(_,_,'Dunhill',_,_), Hs), next(h(_,_,blend,_,_), h(_,cat,_,_,_), Hs), member(h(_,_,'Blue Master',beer,_), Hs), member(h(german,_,'Prince',_,_), Hs), next(h(norwegian,_,_,_,_), h(_,_,_,_,blue), Hs), next(h(_,_,'Blend',_,_), h(_,_,_,water,_), Hs), member(h(_,fish,_,_,_), Hs). next(A, B, Ls) :- append(_, [A,B|_], Ls). next(A, B, Ls) :- append(_, [B,A|_], Ls).
私が間違って何であるか見当がつかない。ありがとう
「next」はどこに定義されていますか?これは組み込みのSWI Prolog述語ではありません。 – lurker
申し訳ありません追加するのを忘れてしまいました。 next(A、B、Ls): - append(_、[A、B | _]、Ls)。 next(A、B、Ls): - append(_、[B、A | _]、Ls)。 – user3637775
私は家(Hs)を走ろうとしています。いいえ、私には理由が分かりません。 – user3637775