This shows you the differences between two versions of the page.
sc330_f2016:prolog1 [2017/03/07 00:01] dhart [Deliverables] |
sc330_f2016:prolog1 [2021/06/30 23:42] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====Objective==== | ||
- | * Gain experience with logic programming. | ||
- | * Become familiar with Prolog. | ||
- | * Gain understanding of the declarative nature of prolog. | ||
- | |||
- | ====Installation==== | ||
- | |||
- | For this class, we use [[http://www.swi-prolog.org|SWI-Prolog]]. You can download binaries for a Windows or macOS system [[http://www.swi-prolog.org/download/stable|here]]. | ||
- | |||
- | Also, there is an unofficial tutorial for installation [[https://wwu-pi.github.io/tutorials/lectures/lsp/010_install_swi_prolog.html|here]]. | ||
- | |||
- | For Mac with [[http://brew.sh|Homebrew]] installed, you can do this command ([[http://stackoverflow.com/a/23904035/756329|info here]]): | ||
- | |||
- | <code>brew install swi-prolog</code> | ||
- | |||
- | For Ubuntu, you can do these commands: | ||
- | |||
- | <code> | ||
- | sudo add-apt-repository ppa:swi-prolog/stable | ||
- | sudo apt-get update | ||
- | sudo apt-get install swi-prolog | ||
- | </code> | ||
- | ====Deliverables==== | ||
- | |||
- | You will turn in two prolog programs (in separate files) that solve the following logic puzzles: | ||
- | |||
- | *{{sc330_f2016:rosiesroses.png?linkonly|Rosie's Roses}} | ||
- | *{{sc330_f2016:schoolsout.png?linkonly|School's Out!}} | ||
- | |||
- | To help you start, we've provided a [[smapleSolution.pl|sample solution]] to {{sc330_f2016:tie.png?linkonly|It's a tie}}. Use this as a model for your own solutions. | ||
- | |||
- | ====Notes==== | ||
- | *Just copy and paste the all_different function. It simply checks to make sure each item in the list is unique. | ||
- | *Check spelling errors. There is no such thing as misspelled atoms. So speigel and spiegel are both valid but different. | ||
- | *Once you have a solution, just check whether it satisfies each of the numbered rules in the problem. | ||
- | *These problems make extensive use of the "not" operator, \+. | ||
- | * \+ works as you expect when all variables are completely bound. | ||
- | * If E contains unbound variables, \+E will try to find bindings to that will make E true. If Successful \+ will fail. | ||
- | * This lab is taken from [[http://www.cis.upenn.edu/~matuszek/cis554-2015/Assignments/prolog-1-logic-puzzles.html|this site]]. There may be additional resources there. |