This is an old revision of the document!
====== Aplicații cu funcții de ordin superior ====== ===== Exerciții ===== 1. Fie două matrici reprezentate ca liste de liste. În rezolvarea exercițiilor de mai jos, puteți folosi doar funcții de ordin superior (împreună cu ''take'' și ''drop''). Implementați funcții care să returneze: * linia ''i'' dintr-o matrice * elementul ''(i, j)'' dintr-o matrice * suma a două matrici * transpusa unei matrici * produsul a două matrici ==== Imagini ca liste ==== 2. O imagine poate fi reprezentată ca o matrice de caractere (numiți, în continuare, "pixeli"). Considerăm că avem trei tipuri de pixeli: ''%%'%%.%%'%%'', ''%%'%%*%%'%%'', ''%%'%% %%'%%'' Implementați următoarele funcții: * flip orizontal, flip vertical, rotație de 90 în sens trigonometric și invers trigonometric * negativul (''%%'%%*%%'%%'' si ''%%'%%.%%'%%'' devin ''%%'%% %%'%%'', iar ''%%'%% %%'%%'' devine ''%%'%%*%%'%%'') * scalarea unei imagini cu ''x'' unități * alipirea a două imagini (cu aceeași înălțime) pe orizontală * alipirea a două imagini (cu aceeași lungime) pe verticală * crop orizontal de la de la coloana ''x'' la coloana ''y'' * crop vertical de la linia ''x'' la linia ''y'' * Implementați suprapunerea unei imagini peste o alta (având aceeași dimensiune) ==== Logo PP ==== <code haskell> l1=" ***** ** ***** ** " l2=" ****** **** ****** **** " l3=" ** * * *** ** * * *** " l4=" * * * *** * * * *** " l5=" * * ** * * ** " l6=" ** ** ** ** ** ** " l7=" ** ** ** ** ** ** " l8=" **** ** * **** ** * " l9=" * *** ** * * *** ** * " l10=" ** ******* ** ******* " l11=" ** ****** ** ****** " l12=" ** ** ** ** " l13=" ** ** ** ** " l14=" ** ** ** ** " l15=" ** ** ** ** ** ** " l16="*** * * *** * * " l17=" *** * *** * " l18=" ****** ****** " l19=" *** *** " img = [l1,l2,l3,l4,l5,l6,l7,l8,l9,l10,l11,l12,l13,l14,l15,l16,l17,l18,l19] </code> ===== Solutii laborator ==== - [[https://github.com/Programming-Paradigms/Labs/archive/master.zip | Solutii laborator 3]] - Puteti, alternativ, sa folositi urmatorul repository git [[https://github.com/Programming-Paradigms/Labs]] pentru a descarca solutiile si le sincroniza, ulterior.