User Tools

Site Tools


sc330_f2016:prolog1

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
sc330_f2016:prolog1 [2018/10/19 21:52]
morse
sc330_f2016:prolog1 [2018/10/26 02:23]
morse
Line 31: Line 31:
 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 Prolog solutions. 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 Prolog solutions.
  
-====Notes====+====Notes/Hints====
   *There are links above to the solutions (not the Prolog code) for these two puzzles so that you can double-check the results produced by your code.  We strongly encourage taking a few minutes to solve these puzzles by hand so that you get a feel for how to solve them and the "​facts"​ you're extracting from the clues in the puzzle. ​ This will give you a better feel for what you need to encode in your Prolog solution as well as giving you a feel for what Prolog'​s trying to do under the hood.  (And it's fun!)   *There are links above to the solutions (not the Prolog code) for these two puzzles so that you can double-check the results produced by your code.  We strongly encourage taking a few minutes to solve these puzzles by hand so that you get a feel for how to solve them and the "​facts"​ you're extracting from the clues in the puzzle. ​ This will give you a better feel for what you need to encode in your Prolog solution as well as giving you a feel for what Prolog'​s trying to do under the hood.  (And it's fun!)
   *Just copy and paste the all_different function. It simply checks to make sure each item in the list is unique.   *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.   *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, check it against the solutions we provide for the puzzles. ​ If you're getting something different, you might not have sufficiently constrained the solution by extracting all of the information from the puzzle. ​ (Or you might have just miscoded one of the facts.)+  *Once you have a solution, check it against the solutions we provide for the puzzles. ​ If you're getting something different, you might not have sufficiently constrained the solution by extracting all of the information from the puzzle. ​ (Or you might have just miscoded one of the facts.) ​ 
 +  *If you don't constrain the solution enough, you can get multiple possible answers. ​ Even if you get lucky and happen to get the right answer as your first answer, especially if you only look at the first one found, that doesn'​t mean your Prolog code is correct. ​ **There is exactly one solution to each puzzle.** 
 +  *Logic tips:  
 +    *"A implies B" or "if A then B" is equivalent to "(A and B) or (not A)". 
 +    *"if A then B; otherwise C" is equivalent to "(A and B) or ((not A) and C)".
   *These problems make extensive use of the "​not"​ operator, \+.   *These problems make extensive use of the "​not"​ operator, \+.
     * \+ works as you expect when all variables are completely bound.     * \+ 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.     * 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.   * 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.
sc330_f2016/prolog1.txt · Last modified: 2021/06/30 23:42 (external edit)