This shows you the differences between two versions of the page.
pp:25:teme:prolog-lightup [2025/05/17 21:58] andrei.olaru |
pp:25:teme:prolog-lightup [2025/05/23 13:24] (current) andrei.olaru |
||
---|---|---|---|
Line 2: | Line 2: | ||
* Data publicării: 12.05.2025 | * Data publicării: 12.05.2025 | ||
- | * Data ultimei modificări: 17.05.2025 (vezi [[#Changelog|changelog]] ) | + | * Data ultimei modificări: 23.05.2025 (vezi [[#Changelog|changelog]] ) |
* [[https://curs.upb.ro/2024/mod/forum/view.php?id=168710|Forum temă]] | * [[https://curs.upb.ro/2024/mod/forum/view.php?id=168710|Forum temă]] | ||
* [[https://vmchecker.cs.pub.ro/ui/#PP|vmchecker]] | * [[https://vmchecker.cs.pub.ro/ui/#PP|vmchecker]] | ||
Line 107: | Line 107: | ||
* pentru toți pereții cu număr cu care este vecină ortogonal poziția, numărul de lumini din jurul peretelui este mai mic decât numărul de pe perete. | * pentru toți pereții cu număr cu care este vecină ortogonal poziția, numărul de lumini din jurul peretelui este mai mic decât numărul de pe perete. | ||
* verificarea dacă o soluție este validă (vedeți cele 3 reguli de mai sus). | * verificarea dacă o soluție este validă (vedeți cele 3 reguli de mai sus). | ||
- | * rezolvarea unei table. | + | * rezolvarea unei table. Aici vom folosi mecanismul de backtracking din Prolog și este suficient să avem două reguli: |
- | * rezolvarea eficientă a unei table, folosind două euristici simple. | + | * dacă tabla este o soluție validă, atunci am terminat |
+ | * găsim pe tablă o poziție unde putem pune o lumină, punem o lumină acolo, și căutăm o soluție continuând de la noua tablă. Dacă căutarea eșuează la un moment dat, Prolog se va întoarce și va încerca să pună o lumină într-o altă poziție disponibilă și va continua de acolo, și așa mai departe. | ||
+ | * rezolvarea eficientă a unei table, folosind două euristici simple: alegem să punem lumini în jurul pereților cu numere care au numărul exact egal cu numărul pozițiilor disponibile (unde se pot pune lumini) din jurul peretelui respectiv; și alegem să punem lumini în poziții care nu ar mai putea fi luminate din alte poziții disponibile de pe tablă. | ||
Hints specifice pentru fiecare predicat sunt disponibile în schelet. | Hints specifice pentru fiecare predicat sunt disponibile în schelet. | ||
Line 145: | Line 147: | ||
* 14.05 -- teste și vmchecker | * 14.05 -- teste și vmchecker | ||
* 17.05 -- publicare etapa 2 | * 17.05 -- publicare etapa 2 | ||
+ | * 21.05 -- schimbare ordine în directions/1 și completare comentariu solve_plus/2 (primul criteriu), adăugare al treilea criteriu. | ||
+ | * 21.05 -- publicare teste etapa 2 | ||
+ | * 23.05 -- uniformizare ordine direcții în predicatele neighbor, delta | ||
+ | * 23.05 -- ajustare teste pentru a preîntâmpina satisfacerea testelo cu soluții triviale. | ||
+ | |||