Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
pp:lplprobs [2019/05/11 20:41] georgem created |
pp:lplprobs [2020/02/05 15:52] (current) dmihai [Torța și podul] |
||
---|---|---|---|
Line 7: | Line 7: | ||
==== Avantaje prolog ==== | ==== Avantaje prolog ==== | ||
- | Problemele de backtracking sau de logică pot fi reprezentate, cât și rezolvate cu mare ușurință în Prolog. | + | Problemele de logică pot fi reprezentate, cât și rezolvate cu mare ușurință în Prolog. |
Să luăm un exemplu de problemă de logică - [[https://swish.swi-prolog.org/example/houses_puzzle.pl?fbclid=IwAR3z3fA1AH6ceBvynZIE4OmfhBAIJzk33XLncQN6txJ4RRRm4IAaC6sOO7sEINSTEIN.HTM|Problema lui Einstein]]. | Să luăm un exemplu de problemă de logică - [[https://swish.swi-prolog.org/example/houses_puzzle.pl?fbclid=IwAR3z3fA1AH6ceBvynZIE4OmfhBAIJzk33XLncQN6txJ4RRRm4IAaC6sOO7sEINSTEIN.HTM|Problema lui Einstein]]. | ||
Se poate observa ușurința cu care se pot adăuga noi interogări, cât și modul în care au fost reprezentate informațiile din baza de cunoștințe. | Se poate observa ușurința cu care se pot adăuga noi interogări, cât și modul în care au fost reprezentate informațiile din baza de cunoștințe. | ||
- | ==== Cheryl's birthday ==== | + | ==== Ziua de naștere - Cheryl ==== |
- | Această problemă are următoarea formulare: | + | Albert și Bernard trebuie să afle ziua și luna în care s-a născut Cheryl. |
+ | Albert cunoaște luna de naștere, iar Bernard ziua. | ||
+ | Aceștia mai cunosc posibilele zile de naștere: | ||
+ | * 15, 16, 19 - Mai | ||
+ | * 17, 18 - Iunie | ||
+ | * 14, 16 - Iulie | ||
+ | * 14, 15, 17 - August | ||
+ | |||
+ | Discuția dintre cei 2 este următoarea: | ||
+ | |||
+ | //Albert: Nu știu când s-a născut Cheryl, însă știu că nici Bernard nu știe.// | ||
+ | |||
+ | //Bernard: La început nu știam ziua de naștere, însă acum știu.// | ||
+ | |||
+ | //Albert: Acum știu și eu ziua de naștere.// | ||
+ | |||
+ | Încercați pe cont propriu să raționalizați cum și-au dat seama cei doi de ziua de naștere, iar după realizați în Prolog | ||
+ | |||
+ | ==== Lupul, capra și varza ==== | ||
+ | Un țăran trebuie să treacă un lup, o capră și o varză pe malul opus al unui râu, într-un timp cât mai scurt. | ||
+ | Acesta are o barcă și poate traversa râul doar cu lupul, cu capra sau cu varza. | ||
+ | Se știe că: | ||
+ | * lupul mănâncă capra dacă sunt lăsați singuri pe un mal | ||
+ | * capra mănâncă varza dacă sunt lăsați singuri pe un mal | ||
+ | |||
+ | Țăranul dorește să ajungă pe celălalt mal cu ambele animale, cât și cu varza. | ||
+ | Care ar fi drumurile pe care ar trebui să le facă țăranul cu barca? (și ce ar trebui să care cu el la fiecare drum). | ||
+ | |||
+ | |||
+ | ==== Vârsta Cheryl ==== | ||
+ | Albert și Bernard doresc să știe vârsta prietenei lor, Cheryl. | ||
+ | Aceștia primesc următoarele informații (exact în această ordine) pentru a-și putea da seama de vârstă: | ||
+ | |||
+ | * Cheryl are 2 frați mai mici. Produsul vârstelor lor este 144. | ||
+ | * Suma vârstelor este un număr de 2 cifre (pe care Albert si Bernard îl știu), iar Albert și Bernard nu se pot prinde de vârstă utilizând această informație în plus. | ||
+ | * Frații au aceeași vârstă. | ||
+ | |||
+ | Încercați să vă dați seama câți ani are Cheryl și prind Albert și Bernard de ziua. | ||
+ | |||
+ | ==== Torța și podul ==== | ||
+ | Patru persoane trebuie să ajungă pe partea cealaltă a unui pod. | ||
+ | Fiecare persoana traversează podul la o viteza diferită. | ||
+ | Vitezele celor 4 persoane sunt: | ||
+ | *A -- 1 minut să traverseze podul | ||
+ | *B -- 2 minute să traverseze podul | ||
+ | *C -- 5 minute să traverseze podul | ||
+ | *D -- 8 minute să traverseze podul | ||
+ | |||
+ | **Constrângeri:** | ||
+ | * maxim 2 persoane pot merge pe pod | ||
+ | * viteza cu care cele 2 persoane pot traversa podul este dată de minimul dintre viteza de mișcare a persoanelor. | ||
+ | * podul poate fi traversat doar dacă una dintre cele 2 persoane deține torța (podul poate fi trecut și de o singură persoană). | ||
+ | |||
+ | Cerința este să se găsească timpul minim necesar astfel încât toate persoanele să fi trecut podul. | ||
+ | |||
+ | {{:pp:skel-probs.zip | Logic problems skel}} | ||
+ | |||
+ | {{:pp:lab11pp14_00.zip| labOra14}}\\ | ||
+ | {{:pp:labora14rez.zip| labOra14Rez}}\\ | ||
+ | {{:pp:tutorial.zip|}} | ||