0

プロローグでアインシュタイン パズル - 5 人の友人版 - を解こうとしましたが、行き詰まりました。コードでエラーが見つからないか、それを解決するために何をすべきかがわかりません。目標は、それぞれが行ったパズルの種類、パズルのテーマ、およびパズルを完成させるのにかかった時間を正しく識別する Prolog プログラムを作成することです - ソリューション (人、種類、時間、テーマ)

私もこのエラーを受け取ります: uncaught exception: error(existence_error(procedure,members/3),clue1/0)

メンバー関係あると思う?

知識ベース:

  1. 5 人の友達は、クリスタル、アンジー、宇宙パズルをした人、パズルを完成させるのに 30 分かかった人、単語検索をした人です。

  2. イーサンは文字タイルを 90 分で完成させるか、冬をテーマにしたパズルを 20 分で完成させました。

  3. Dereck と Logic Puzzle をした人のうち、1 人は 45 分かかり、もう 1 人は映画をテーマにしたパズルをしました。男の子は、パズルを完成させるのに最も短い時間と最も長い時間を要しました。

  4. ニックはビジュアル数独ではなく、パズルに 40 分もかかりませんでした。アンジーは猫のパズルに 40 分以上を費やしました。

  5. スポーツ パズルに 60 分間取り組んだ女の子は、ジグソーパズルをしませんでした。ジグソーパズルは、論理パズルをした人よりも短い時間でしたが、単語検索をした人よりも多くの時間で少年によって完成しました.

  6. ビジュアル数独は、完了するのに 1 時間かかったか、宇宙をテーマにしたものでした。Dereck は冬をテーマにしたパズル (単語検索ではありません) を行いませんでした。

これが私のコードです:

woman(krystal).
woman(angie).
man(dereck).
man(ethan).
man(nick).

kind(word).
kind(sudoku).
kind(letter).
kind(jigsaw).
kind(logic).

time(30).
time(90).
time(20).
time(45).
time(60).

theme(outerspace).
theme(winter).
theme(movies).
theme(sports).
theme(cat).

members([],_).
members([M|Ms],Xs) :- select(M,Xs,Ys),members(Ms,Ys).


clue1(Game) :- members([[krystal,_,_,_,_], [angie,_,_,_], [P,_,30,_], [P,word,_,_], [P,_,_,outerspace]], Game, man(P)).
clue2(Game) :- members([[krystal,_,_,_,_], [angie,_,_,_],[P,_,_,outerspace], [P,_,_,outerspace], [P,_,_,outerspace]], Game, man(P)).
clue3(Game) :- members([[krystal,_,_,_,_], [angie,_,_,_],[P,_,30,_], [P,_,30,_], [P,_,30,_]], Game, man(P)).
clue4(Game) :- members([[krystal,_,_,_,_], [angie,_,_,_],[P,_,_,word], [P,_,_,word], [P,_,_,word]], Game, man(P)).
clue5(Game) :- member([ethan, letter, 90,_], Game).
clue5(Game) :- member([ethan, _, 20, winter], Game).
clue6(Game) :- member([P, _, 20, _], Game, man(P)).
clue6(Game) :- member([P, _, 90, _], Game), man(P).
clue7(Game) :- member([dereck, _, 45, _], Game).
clue7(Game) :- member([dereck, _, _, movies], Game).
clue8(Game) :- member([_, logic, 45, _], Game).
clue8(Game) :- member([_, logic, _, sport], Game).
clue9(Game) :- member([nick, _, 30, _], Game).
clue9(Game) :- member([nick, _, 20, _], Game).
clue10(Game) :- member([P, sudoku, _, _], Game, \+nick(P)).
clue11(Game) :- member([angie, _, 45, cat], Game).
clue11(Game) :- member([angie, _, 60, cat], Game).
clue11(Game) :- member([angie, _, 90, cat], Game).
clue12(Game) :- member([P, Q, 60, sport], Game, girl(P), \+sport(Q)).

clue13(Game) :- member([P, jigsaw, Q, _], Game, man(P), \+time(20)).
clue13(Game) :- member([P, jigsaw, Q, _], Game, man(P), \+time(90)).
clue13(Game) :- member([P, jigsaw, 30, _], Game, man(P)), member([_, word, 20, _], Game), (member([_, logic, 40, _], Game); member([_, logic, 60, _], Game); member([_, logic, 90, _], Game)).
clue13(Game) :- member([P, jigsaw, 45, _], Game, man(P)), (member([_, word, 20, _], Game); member([_, word, 30, _], Game)), (member([_, logic, 60, _], Game); member([_, logic, 90, _], Game)).
clue13(Game) :- member([P, jigsaw, 60, _], Game, man(P)), (member([_, word, 20, _], Game); member([_, word, 30, _], Game); member([_, word, 46, _], Game)), member([_, logic, 90, _], Game).

clue14(Game) :- member([_, sudoku, 60, _], Game).
clue14(Game) :- member([_, sudoku, _, outerspace], Game).
clue15(Game) :- member([P, _, _, winter], Game, \+dereck(P)).
clue16(Game) :- member([_,word,_,P], Game, \+winter(P)).

clue17(Game, A,B,C,D) :- member([A,B,C,D], Game).

solution(A,B,C,D) :-
    Game = [A,B,C,D],
    clue1(Game),
    clue2(Game),
    clue3(Game),
    clue4(Game),
    clue5(Game),
    clue6(Game),
    clue7(Game),
    clue8(Game),
    clue9(Game),
    clue10(Game),
    clue11(Game),
    clue12(Game),
    clue13(Game),
    clue14(Game),
    clue15(Game),
    clue16(Game),
    clue17(Game, A,B,C,D),
    members([[_,sudoku,_,_], [_,logic,_,_],[_,letter,_,_],[_,jigsaw,_,_],[_,word,_,_]],Game),
    members([[krystal,_,_,_],[angie,_,_,_],[ethan,_,_,_],[dereck,_,_,_],[nick,_,_,_]],Game),
    members([[_,_,60,_],[_,_,45,_],[_,_,90,_],[_,_,30,_],[_,_,20,_]],Game),
    members([[_,_,_,sports],[_,_,_,cat],[_,_,_,outerspace],[_,_,_,movies],[_,_,_,winter]],Game),
    write(Game),
    true.

/*
1) One is named Krytal who didnt do the Outerspace puzzle, the Word search and didnt use 30 min 
    and One is named Angie who didnt do the Outerspace puzzle, the Word search and didnt use 30 min
2) One boy did the Outerspace puzzle
3) One boy used 30 min
4) One boy did the Word Search  
5) Ethan either finished the letter tiles in 90 minutes or did the winter themed puzzle in 20 minutes.
6) Boys took the shortest and longest times to finish their puzzles.
7) Dereck either took 45 minutes or did a movies themed puzzle.
8) The one who did the logic puzzle either took 45 minutes or did a movies themed puzzle.
9) Nick spent less than 40 minutes working on his puzzle
10) Nick did not the Visual Sudoku. 
11) Angie spent more than 40 minutes working on her Cat puzzle.
12) The girl who spent 60 minutes working on a sports puzzle did NOT do the Jigsaw. 
13) the jigsaw was done by a boy in less time than the one who did the Logic Puzzle but more time than the one who did the Word Search.
14) The Visual Sudoku either took an hour to complete or was Outerspace themed. 
15) Dereck did not do the winter themed puzzle 
16) The Word Search is not winter themed
*/
4

1 に答える 1