This is an old revision of the document!
1. Scrieti o functie in Haskell care primeste un numar natural $ n$ si intoarce o functie $ f_n(x) = 2x+1$ daca $ n$ este par si $ f_n(x) = x-3$ daca $ n$ este impar.
2. Scrieti un predicat in Prolog care verifica daca doua liste au exact aceleasi elemente (nu neaparat in aceeasi ordine).
3. Dati un exemplu de lambda-expresie care nu se poate reduce folosind evaluarea normala, dar care se poate reduce in exact doi pasi (la o expresie ireductibila) folosind evaluarea aplicativa.
4. Folosind tipul de date Query, definiti o interogare care selecteaza ocupatia pentru toti utilizatorii care au user_id-ul intre 15 si 45 si au numele care incepe cu litera M sau litera N.
5. Definiti tipul de date TNodeTrie al arborilor de cautare in care fiecare muchie este encodata cu un caracter. Scrieti o functie care primeste un String si un arbore cu acest tip de noduri si returneaza daca poate fi format acel String prin parcurgerea acelui arbore.
TrieSearch :: String -> TNodeTrie -> Bool
Eg.
.
a/ b| c\
. .
c/ e\ a| o|
. . . .
t|
.
String-uri posibile in acest arbore: a, ac, ae, b, ba, c, co, cot.
6. Consideram formule SAT codificate folosind predicatele and/2, or/2 si not. Spre exemplu: and(not(X),or(Y,not(Z))), codifica formula $ \lnot X \wedge (Y \vee \lnot Z)$ . Scrieti un predicat sat care construieste toate interpretarile variabilelor care satisfac formula. Exemplu:
?- sat(and(not(X),or(Y,not(Z))). X = 0, Y = 1, Z = 0; X = 0, Y = 1, Z = 1; X = 0, Y = 0, Z = 0;