Edit this page Backlinks This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. 1. Scrieti o functie in Haskell care primeste un numar natural $math[n] si intoarce o functie $math[f_n(x) = 2x+1] daca $math[n] este par si $math[f_n(x) = x-3] daca $math[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. <code haskell> TrieSearch :: String -> TNodeTrie -> Bool </code> Eg. <code> . a/ b| c\ . . c/ e\ a| o| . . . . t| . </code> 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 $math[\lnot X \wedge (Y \vee \lnot Z)]. Scrieti un predicat ''sat'' care construieste toate interpretarile variabilelor care satisfac formula. Exemplu: <code Prolog> ?- 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; </code>