Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
exam [2020/09/03 09:24] pdmatei created |
exam [2020/09/04 10:22] (current) pdmatei |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | 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. | + | 1. Scrieti o functie in Haskell care verifica daca o doua liste contin exact aceleasi elemente (nu neaparat in ordine). |
- | 2. Scrieti un predicat in Prolog care verifica daca doua liste au exact aceleasi elemente (nu neaparat in aceeasi ordine). | + | 2. Scrieti un predicat in Prolog care verifica daca **toate** elementele unei liste sunt pozitive. |
- | 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. | + | 3. Evaluati, folosind strategiile normala si aplicativa, urmatoarea lambda-expresie $math[(\lambda x.(x\;(x\;x))\; (\lambda z.x\;\lambda x.z))]. |
- | 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''. | + | 4. Folosind tipul de date ''Query'', definiti o interogare care selecteaza ocupatia pentru toti utilizatorii care au varsta intre 15 si 45 sau au numele formate din cuvinte care incep cu litera ''Q'' sau litera ''F''. |
- | 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. | + | 5. Definiti tipul de date ''Sentence'', care codifica propozitii dupa urmatoarele reguli: |
+ | * o propozitie este formata dintr-un **subiect** si un **obiect** | ||
+ | * un subiect este **un nume propriu** format din unul, doua sau trei string-uri care incep cu majuscula. | ||
+ | * un obiect este un **predicat** (String) urmat de unul sau mai multe adjective (String-uri). | ||
- | <code haskell> | + | Scrieti o functie care primeste un ''String'', si intoarce un obiect ''Sentence''. Puteti presupune ca string-ul este format corect. |
- | TrieSearch :: String -> TNodeTrie -> Bool | + | |
- | </code> | + | |
- | Eg. | + | 6. Scrieti un predicat in Prolog care primeste o lista ''L'' si construieste **lista tuturor rotatiilor** listei ''L''. Lista tuturor rotatiilor listei ''[1,2,3]'' este ''[[1,2,3],[2,3,1],[3,1,2]]''. |
- | <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> | + | |