This shows you the differences between two versions of the page.
pp:21:teme:prolog-integrame [2021/05/12 22:51] andrei.olaru [Descriere generală] |
pp:21:teme:prolog-integrame [2021/05/23 17:25] (current) andrei.olaru [Changelog] |
||
---|---|---|---|
Line 108: | Line 108: | ||
**Important:** Citiți comentariile din surse (mai ales din ''integrame.pl''). Acestea conțin toate detaliile despre predicatele cerute și despre structurile folosite. | **Important:** Citiți comentariile din surse (mai ales din ''integrame.pl''). Acestea conțin toate detaliile despre predicatele cerute și despre structurile folosite. | ||
- | Lucrați în fișierul ''integrame.pl''. Acesta conține documentația tuturor predicatelor cerute. | + | **Lucrați numai în fișierul ''integrame.pl''.** Acesta conține documentația tuturor predicatelor cerute. |
Fișierul ''input.pl'' conține integramele folosite la testare. **Atenție:** integramele sunt definite aici într-un format oarecum diferit de cel folosit în predicate. Folosiți predicatul ''integrama/2'' pentru a obține integramele. | Fișierul ''input.pl'' conține integramele folosite la testare. **Atenție:** integramele sunt definite aici într-un format oarecum diferit de cel folosit în predicate. Folosiți predicatul ''integrama/2'' pentru a obține integramele. | ||
Line 156: | Line 156: | ||
==== Etapa 3 ==== | ==== Etapa 3 ==== | ||
- | [în curând] | + | În această etapă veți implementa rezolvarea propriu-zisă a integramei. O soluție a integramei este una în care pentru fiecare întrebare este asociat un cuvânt (un cuvânt din vocabular poate fi asociat cel mult unei întrebări) de lungimea potrivită, și care la intersecțiile cu oricare alt spațiu are aceeași literă cu cuvântul asociat cu întrebarea corespunzătoare acelui spațiu. |
+ | Trebuie implementate predicatele: | ||
+ | * ''solutii_posibile/2'', care determină toate cuvintele (ca liste de litere) care pot fi soluție pentru fiecare întrebare. | ||
+ | * ''rezolvare/2'', care determină în al doilea argument o soluție pentru integramă. | ||
+ | * o soluție este reprezentată ca o listă de perechi întrebare-răspuns, unde atât întrebarea (identificată prin textul ei) cât și răspunsul sunt literali/atomi, ca în fișierul ''solutie.pl''. | ||
+ | * ca bonus poate fi considerată oricare dintre următoarele două proprietăți (cealaltă va fi parte din punctajul nominal): | ||
+ | * tema funcționează într-un timp acceptabil (5 secunde) și pentru cazuri în care vocabularul este mai extins; | ||
+ | * predicatul ''rezolvare'' produce un număr corect de soluții (2 soluții pentru integrama 0 și câte o singură soluție pentru celelalte integrame) | ||
+ | * (adică, dacă implementați doar una dintre cele două proprietăți, aveți punctaj nominal; dacă implementați pe ambele, aveți și bonus) | ||
+ | ==== Punctaje ===== | ||
+ | * pentru etapa 1 puteți acumula maxim 3.6 puncte | ||
+ | * pentru etapa 2 puteți acumula maxim 3.6 puncte | ||
+ | * pentru etapa 3 puteți acumula maxim 4.8 puncte | ||
+ | * în total puteți acumula maxim 12 puncte. | ||
+ | |||
+ | |||
+ | ===== Observații ==== | ||
+ | |||
+ | * Lucrați numai în fișierul ''integrame.pl'' | ||
+ | * Nu utilizați predicatul ''solutie'' | ||
+ | * Nu lăsați variabile singleton în rezolvare. | ||
===== Resurse ===== | ===== Resurse ===== | ||
* {{.prolog:schelet.zip|schelet de cod}} | * {{.prolog:schelet.zip|schelet de cod}} | ||
+ | * {{.prolog:schelet2.zip|schelet de cod pentru etapa 2}} | ||
+ | * {{.prolog:schelet3.zip|schelet de cod pentru etapa 3}} | ||
+ | |||
+ | //Notă: practic, diferența între fișiere este doar fișierul ''pointsN.pl'' utilizat, pentru a activa testele pentru diverse etape.// | ||
===== Changelog ===== | ===== Changelog ===== | ||
Line 174: | Line 198: | ||
* clarificare legată de reprezentarea elementelor din integramă ca literali, nu ca stringuri, și utilizarea predicatului ''atom_chars'' (în loc de ''string_chars'') | * clarificare legată de reprezentarea elementelor din integramă ca literali, nu ca stringuri, și utilizarea predicatului ''atom_chars'' (în loc de ''string_chars'') | ||
* adăugare în enunț a detalierii structurii unei integrame | * adăugare în enunț a detalierii structurii unei integrame | ||
+ | * 18.05 (20:00) | ||
+ | * publicare vmchecker pentru etapele 2 și 3, publicare etapa 3 | ||
+ | * modificare test ''completare|d'' pentru a verifica corect și cazurile în care ''completare'' întoarce un număr mare de soluții. | ||
+ | * corectare mențiuni despre //stringuri// în fișierul ''integrame.pl'' | ||
+ | * adăugare documentare corectă (în termeni de "tipuri" ale argumentelor) pentru bonus pentru predicatele ''lungime'' și ''intersectie''. | ||
+ | * 23.05 | ||
+ | * modificare structură punctaje astfel încât la fiecare etapă se primesc doar punctele de pe etapa respectivă (vedeți [[#Punctaje]]) | ||
+ | * fix bug în care era posibil ca modul de test detaliat să fie activat pe vmchecker | ||