我在Prolog中實現了愛因斯坦謎語,我試圖找出誰在家裏有一條魚。在第一家愛因斯坦謎語與術語列表
- 挪威人住
- 英國人住在紅房子:)
規則;
我不能在這個代碼查找故障並跟蹤選項沒有這個問題幫助。 - 溫室坐落在白宮左側。
- 丹麥人喝茶。
- 輕煙民住貓的飼養員旁邊。
- 黃色房屋的居民抽雪茄。
- 德國人抽水管。
- 中心房屋的居民喝牛奶。
- 輕煙的人有鄰居喝水。
- 無需過濾器繁殖鳥類的菸捲煙。
- 瑞典人養殖的狗。
- 挪威人住在藍屋旁邊。
- 馬的飼養員住在黃房子旁邊。
- 煙薄荷醇喝啤酒。
- 在溫室裏,他們喝咖啡。
這裏是我的代碼:
on_the_left(X, Y, N) :-
Y is X - 1,
\+ Y < 1,
\+ X > N.
next_to(X, Y, N) :-
(Y is X + 1;
Y is X - 1),
\+ X > N,
\+ Y > N,
\+ X < 1,
\+ Y < 1.
fish(Who) :-
Houses = [
house(1, _Color1, _From1, _Animal1, _Drink1, _Smoke1),
house(2, _Color2, _From2, _Animal2, _Drink2, _Smoke2),
house(3, _Color3, _From3, _Animal3, _Drink3, _Smoke3),
house(4, _Color4, _From4, _Animal4, _Drink4, _Smoke4),
house(5, _Color5, _From5, _Animal5, _Drink5, _Smoke5) ],
N is 5,
%-- hint 1
member(house(1, _, norway, _, _, _), Houses),
%-- hint 2
member(house(_, red, england, _, _, _), Houses),
%-- hint 3 - on_the_left
member(house(GREEN, green, _, _, _, _), Houses),
member(house(WHITE, white, _, _, _, _), Houses),
on_the_left(GREEN, WHITE, N),
%-- hint 4
member(house(_, _, denmark, _, tea, _), Houses),
%-- hint 5 - next_to
member(house(LIGHT, _, _, _, _, light), Houses),
member(house(CAT, _, _, cat, _, light), Houses),
next_to(LIGHT, CAT, N),
%-- hint 6
member(house(_, yellow, _, _, _, cigar), Houses),
%-- hint 7
member(house(_, _, germany, _, _, waterpipe), Houses),
%-- hint 8
member(house(3, _, _, _, milk, _), Houses),
%-- hint 9 - next_to
member(house(WATER, _, _, _, water, _), Houses),
next_to(LIGHT, WATER, N),
%-- hint 10
member(house(_, _, _, bird, _, nofilter), Houses),
%-- hint 11
member(house(_, _, sweden, dog, _, _), Houses),
%-- hint 12 - next_to
member(house(NORWAY, _, norway, _, _, _), Houses),
member(house(BLUE, blue, _, _, _, _), Houses),
next_to(NORWAY, BLUE, N),
%-- hint 13 - next_to
member(house(HORSE, _, _, horse, _, _), Houses),
next_to(HORSE, GREEN, N),
%-- hint 14
member(house(_, _, _, _, beer, menthol), Houses),
%-- hint 15
member(house(_, green, _, _, coffee, _), Houses),
%-- FINAL QUESTION - WHO LET THE FISH OUT?
member(house(_, _, _, fish, _, _), Houses),
member(house(_, _, Who, fish, _, _), Houses).
我嘗試了很多組合,但:
- 魚(誰?)。
錯誤。
編輯:現在
代碼工作,我改變了:
1 *來源:
%-- hint 5 - next_to
member(house(LIGHT, _, _, _, _, light), Houses),
member(house(CAT, _, _, cat, _, light), Houses),
要:
%-- hint 5 - next_to
member(house(LIGHT, _, _, _, _, light), Houses),
member(house(CAT, _, _, cat, _, _), Houses),
2 *來源:
%-- hint 13 - next_to
member(house(HORSE, _, _, horse, _, _), Houses),
next_to(HORSE, GREEN, N),
要:
%-- hint 13 - next_to
member(house(YELLOW, yellow, _, _, _, _), Houses),
member(house(HORSE, _, _, horse, _, _), Houses),
next_to(HORSE, YELLOW, N),
如果你正在讀這一下關於幫手結構@Enigmativity評論藏漢謂詞。
不錯,謝謝。我添加了一個規則。 5提示中的錯誤被修復,但程序仍然無法正常工作。 – CryptoNewbie