Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

pl:prolog:pllib:puzzle [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 +====== Puzzle ======
 +{{tag>​puzzle fun}}
 +===== Description =====
 +Solution is a solution of Puzzle, where Puzzle is puzzle(Clues,​Queries,​Solution).
 +
 +**Source**: ​ The Art of Prolog
 +===== Download =====
 +Program source code: {{puzzle.pl}}
 +===== Listing =====
 +<code prolog>
 + /* Test data */
 +
 + test_puzzle(Name,​Solution) :-
 + structure(Name,​Structure),​
 + clues(Name,​Structure,​Clues),​
 + queries(Name,​Structure,​Queries,​Solution),​
 + solve_puzzle(puzzle(Clues,​Queries,​Solution),​Solution).
 +
 + structure(test,​[friend(N1,​C1,​S1),​ friend(N2,​C2,​S2),​ friend(N3,​C3,​S3)]).
 +
 + clues(test,​Friends,​
 + [(did_better(Man1Clue1,​ Man2Clue1, Friends),​ % Clue 1
 +   name_(Man1Clue1,​ michael), sport(Man1Clue1,​basketball),​
 +   nationality(Man2Clue1,​american)),​
 + (did_better(Man1Clue2,​ Man2Clue2, Friends),​ % Clue 2
 +   name_(Man1Clue2,​ simon), nationality(Man1Clue2,​israeli),​
 +   sport(Man2Clue2,​tennis)),​
 + (first(Friends,​ManClue3),​sport(ManClue3,​cricket))
 + ]).
 +
 + queries(test,​ Friends,
 +     [ member(Q1,​Friends),​
 + name_(Q1,​Name),​
 + nationality(Q1,​australian), ​                    % Query 1
 + member(Q2,​Friends),​
 + name_(Q2,​richard),​
 + sport(Q2,​Sport)  ​       % Query 2
 + ],
 + [['​The Australian is', Name], ['​Richard plays ', Sport]]
 + ).
 +
 + did_better(A,​B,​[A,​B,​C]).
 + did_better(A,​C,​[A,​B,​C]).
 + did_better(B,​C,​[A,​B,​C]).
 +
 + name_(friend(A,​B,​C),​A).
 + nationality(friend(A,​B,​C),​B).
 + sport(friend(A,​B,​C),​C).
 +
 + first([X|Xs],​X).
 +/*
 + solve_puzzle(Puzzle,​Solution) :-
 + Solution is a solution of Puzzle,
 + where Puzzle is puzzle(Clues,​Queries,​Solution).
 +*/
 +
 + solve_puzzle(puzzle(Clues,​Queries,​Solution),​Solution) :-
 + solve(Clues),​
 + solve(Queries).
 +
 + solve([Clue|Clues]) :-
 + Clue, solve(Clues).
 + solve([]).
 +
 +% Program 14.6: A puzzle solver
 +
 +%?​-test_puzzle(test,​Solution).
 +
 +
 +
 +</​code>​
 +===== Comments =====
  
pl/prolog/pllib/puzzle.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0