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. | ||
| + | |||