Prolog を使用してアインシュタインのなぞなぞを解こうとしています。ハウス(Hs)で実行しようとすると、Noと表示されます。タスクは
- イギリス人は赤い家に住んでいます。
- スウェーデン人は犬をペットとして飼っています。
- デーンはお茶を飲みます。
- グリーン ハウスはホワイト ハウスのすぐ左側にあります。
- グリーンハウスのオーナーはコーヒーを飲みます。
- ポールモールを吸うオーナーが鳥を飼っています。
- 黄色い家のオーナーはダンヒルを吸っている.
- センターハウスに住むオーナーは牛乳を飲んでいます。
- ノルウェー人は最初の家に住んでいます。
- ブレンドを吸う飼い主と、猫を飼っている飼い主の隣に住んでいます。
- 馬を飼っているオーナーと、ダンヒルを吸っているオーナーの隣に住んでいます。
- ブルーマスターズを吸うオーナーはビールを飲む。
- ドイツ人はプリンスを吸う。
- そのノルウェー人は青い家の隣に住んでいます。
- ブレンドを吸うオーナーは、水を飲む人の隣に住んでいます。
住宅(Hs) :-
長さ(Hs, 5),
member(h(英語,_,_,_,red), Hs),
member(h(swede,dog,_,_,_), Hs),
member(h(_,_,_,coffee,green), Hs),
member(h(dane,_,_,tea,_), Hs),
next(h(_,_,_,_,緑), h(_,_,_,_,白), Hs),
member(h(_,bird,'ポールモール',_,_), Hs),
member(h(_,_,'ダンヒル',_,yellow), Hs),
Hs = [_,_,h(_,_,_,牛乳,_),_,_],
Hs = [h(ノルウェー語,_,_,_,_)|_],
next(h(_,horse,_,_,_), h(_,_,'ダンヒル',_,_), Hs),
next(h(_,_,blend,_,_), h(_,cat,_,_,_), Hs),
member(h(_,_,'ブルーマスター',beer,_), Hs),
member(h(ドイツ語,_,'プリンス',_,_), Hs),
next(h(ノルウェー語,_,_,_,_), h(_,_,_,_,青), Hs),
next(h(_,_,'ブレンド',_,_), h(_,_,_,water,_), Hs),
メンバー(h(_,fish,_,_,_), Hs)。
next(A, B, Ls) :- append(_, [A,B|_], Ls)。
next(A, B, Ls) :- append(_, [B,A|_], Ls).
何が悪いのかわかりません。ありがとう