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;