The “funnest” way I can think of to practice logic programming is to use it to solve a logic puzzle. A logic puzzle is typically presented as a mystery and list of clues that can be used to infer facts such as “who done it”.
For this assignment, we will use the
https://www.printable-puzzles.com/printable-logic-…
to an external site. website to find two puzzles to solve. One will be a “challenging” puzzle and the other will be a “Very Hard” puzzle.
For this assignment, you will write all of the clues as rules in a prolog program.
Your prolog file must obey the folowing format:
The name of the prolog files must be ‘challenging.pl’ and ‘veryhard.pl’
Your prolog file must provide a url/1 fact to get the URL of the puzzle being solced.
Your prolog file must also provide a solution/1 fact with the correct solution hardcoded in. You will get the correct solution from the https://www.printable-puzzles.com/printable-logic-… to an external site. website.
Your prolog file must provide a solve/1 rule that uses the clues to find one, and only one, table that is the solution.
Your puzzle must have a sereis of clueX(T) rules that are satisfied whenever the solution in T is consistent with clue X.
Your puzzle must include the check rule as follows:
check :- solution(S), solve(S), aggregate_all(count, (solve(_T)), Count), format(“Found ~w solutions~n”, [Count]), Count=1.
To receive credit, your puzzle must find one, and only one, solution to the puzzle.
Your assignment will be checked by running swipl in the docker container as follows:
swipl -q -g check -g halt challenging.pl