This is an old revision of the document!
===== Laborator 10 - Prolog: Introducere ===== ==== Liste & diverse ==== - Definiti predicatul ''firstTwo(X,Y,L)'' care leaga variabilele ''X'', ''Y'' la primele doua elemente din lista ''L'', daca acestea exista. - Definiti predicatul ''contains(E,L)'' care verifica daca elementul la care este legat ''E'' exista in lista ''L''. - Definiti predicatul ''notcontains(E,L)''. * Poate acest predicat sa fie folosit pentru a genera toate elementele care nu sunt in ''L''? Justificati raspunsul. - Definiti predicatul ''unique(L1,L2)''. ''L2'' este lista ''L1'' fara elemente duplicate. - Definiti predicatul ''listOnly(L1,L2)''. ''L2'' este lista ''L1'' care contine doar elementele de tip lista. Exemplu: ''listOnly([1,[2,3],4,[5],6], [ [2,3],[5]]).'' - Implementati ''insertionSort'' in Prolog. * Idenficati predicatele necesare, aritatea fiecaruia, variabilele care reprezinta input-ul, respectiv output-ul. ==== Arbori ==== - Stabiliti o conventie de reprezentare pentru arbori. Ilustrati conventia in Prolog. Exemplu: ''T=...''. - Implementati predicatele ''size(T,S)'' si ''height(T,H)''. - Definiti predicatul ''flatten(T,L)'' unde ''T'' este un arbore. ==== Reprezentarea datelor in Prolog ==== - Stabiliti o conventie de reprezentare pentru expresii generate de gramatica de mai jos, urmarind acceeasi abordare ca la arbori: <code> <expr> ::= <valoare> | <variabila> | <expr> + <expr> | <expr> * <expr> <variabila> ::= string <valoare> ::= orice </code> - Scrieti un predicat ''eval(Expr,R)'' unde ''R'' este rezultatul evaluarii lui ''Expr''. ''Expr'' **nu contine** variabile. - Scrieti un predicat care permite evaluarea unei expresii ce contine variabile. ==== Resurse (functii matematice) ==== * [[http://www.swi-prolog.org/man/arith.html|Functii utile in Prolog]]