Sunteți pe pagina 1din 1

Programare Funct a , ional

Tema 1
(grupele de vineri, interval orar 12-14/14-16/16-18)
1. (1 punct) Folosind map, lter, foldl s a: , i/sau foldr, scriet , i funct , ii care calculeaz (a) suma resturilor mp art a, , irii la 7 a numerelor impare dintr-o list (b) lista init ncep cu liter a mare (dintr-o list a de string-uri), , ialelor string-urilor care (c) produsul numerelor impare dintr-o list a de numere. 2. (1 punct) Scriet nc at foldl fct [] l inverseaz a lista l (i.e., dac a l = , i o funct , ie fct astfel [a1 , a2 , . . . , an ], atunci foldl fct [] [a1 , a2 , . . . , an ] = [an , . . . , a2 , a1 ]). 3. (1 punct) Scriet ntoarce ca rezultat , i o funct , ie fct care primes , te ca argument o funct , ie f s ,i o funct am cu g n continuare) cu proprietatea g x y = f y x pentru orice , ie (pe care o not argumente x si y . 4. (1 punct) Scriet a funct a numere ca argumente s ntorc cel , i dou , ii gcd s , i gcd care primesc dou ,i mai mare divizor comun al celor dou a numere. Funct a funct , ia gcd trebuie s , ioneze prin metoda sc aderilor repetate iar gcd prin metoda mp art ntoarce c atul , irilor repetate. (Hint: div x y mp art ntoarce restul mp art , irii lui x la y iar mod x y , irii lui x la y ). Folosit , i foldl s , i gcd pentru a calcula cel mai mare divizor comun al tuturor numerelor dintr-o list a nevid a. 5. (1 punct) Scriet a de cifre (e.g., [1, 5, 2]) s ntoarce , i o funct , ie care primes , te la intrare o list ,i num arul al c arui cifre n baza zece se g asesc n list a (e.g., pentru [1, 5, 2], num arul 152). Scriet ,i o funct ar b (cu 2 b 10, reprezent and o baz a numeric a) s , ie care primes , te la intrare un num ,i o list a (e.g., [1, 0, 1, 1]) s ntoarce num arul ale c arui cifre n baza b se g asesc n list a n ordine ,i invers a (i.e., pentru b = 2 s ntoarce 13, deoarece 11012 = 1310 ). , i lista [1, 0, 1, 1],

S-ar putea să vă placă și