Exerciții Laboratorul 3, Exercițiul 6

evs/2 — toate valuările pe o mulțime de variabile

Laboratorul 3, Exercițiul 6 advanced Calculul propozițional în PrologRecursivitate pe liste

Definiți un predicat evs/2 astfel încât, pentru orice listă de variabile S, avem că pentru orice Es, evs(S, Es) este adevărat exact atunci când Es este lista evaluărilor definite pe S.

?- evs([c, b], Es).
Es = [[(c, 0), (b, 0)], [(c, 1), (b, 0)], [(c, 0), (b, 1)], [(c, 1), (b, 1)]]

Hint: pentru n variabile, vrem 2ⁿ evaluări. Generează mai întâi toate tuplurile binare de lungime n (cu cartesian_product și repeat), apoi asociază fiecare tuplu variabilelor prin zip/3.

Te-ai blocat?
editor soluție
?-
Tastează o interogare (ex. father_of(sandra, X).) și apasă Enter — sau apasă pe un caz de test de mai jos.
Cazuri de test (1 — apasă pe unul ca să îl rulezi, sau Verifică pentru toate)
?
evs([c, b], Es). așteptat: Es = [[(c,0),(b,0)],[(c,1),(b,0)],[(c,0),(b,1)],[(c,1),(b,1)]]