This shows you the differences between two versions of the page.
|
poo:laboratoare:14 [2026/01/12 08:24] george.tudor1906 |
poo:laboratoare:14 [2026/01/12 08:32] (current) george.tudor1906 |
||
|---|---|---|---|
| Line 56: | Line 56: | ||
| Veți porni implementarea de la clasa **ListUtil**, pusă la dispoziție în arhiva laboratorului. | Veți porni implementarea de la clasa **ListUtil**, pusă la dispoziție în arhiva laboratorului. | ||
| - | |||
| - | == Explicații pentru funcționale == | ||
| - | |||
| - | **foldl(function, init, list)** | ||
| - | Returnează rezultatul aplicării funcției function pe rând asupra unui element din listă | ||
| - | și a unui acumulator init. Ordinea folosirii elementelor din listă este de la stânga la dreapta. | ||
| - | <code> | ||
| - | foldl(f(x, y) = x + y, 5, [0, 1, 2, 3]) => 11 | ||
| - | </code> | ||
| - | |||
| - | **foldr(function, init, list)** | ||
| - | Are un comportament similar cu foldl, însă ordinea folosirii elementelor din listă | ||
| - | este de la dreapta la stânga. | ||
| - | <code> | ||
| - | foldr(f(x, y) = y, 4, [0, 1, 2, 3]) => 0 | ||
| - | </code> | ||
| - | |||
| - | **map(function, list)** | ||
| - | Returnează lista rezultatelor aplicării unei funcții f asupra fiecărui element dintr-o listă. | ||
| - | <code> | ||
| - | map(f(x) = 2*x, [0, 1, 2, 3]) => [0, 2, 4, 6] | ||
| - | </code> | ||
| - | |||
| - | **filter(predicat, list)** | ||
| - | Returnează lista elementelor dintr-o listă care satisfac un predicat p | ||
| - | (un predicat îl vom percepe ca o funcție care are un rezultat de tip Boolean). | ||
| - | <code> | ||
| - | filter(f(x) = x % 2 == 0, [0, 1, 2, 3]) => [0, 2] | ||
| - | </code> | ||
| - | |||
| - | **reduce(function, list)** | ||
| - | Aplică funcția pentru primele două elemente din listă, apoi pentru rezultatul obținut | ||
| - | anterior și următorul element și tot așa. | ||
| - | <code> | ||
| - | reduce(f(x, y) = x + y, [47, 11, 42, 13]) => 113 | ||
| - | </code> | ||
| - | |||
| - | **all(predicat, list)** | ||
| - | Primește un predicat (metodă ce are ca rezultat un boolean) și verifică dacă toate | ||
| - | elementele din listă satisfac predicatul. | ||
| - | <code> | ||
| - | all(f(x) = x > 0, [0, 1, 2, 3]) => False | ||
| - | all(f(x) = x >= 0, [0, 1, 2, 3]) => True | ||
| - | </code> | ||
| - | |||
| - | **any(predicat, list)** | ||
| - | Primește un predicat și verifică dacă există cel puțin un element în listă care | ||
| - | satisface predicatul. | ||
| - | <code> | ||
| - | any(f(x) = x < 0, [1, 2, 3, 4]) => False | ||
| - | any(f(x) = x % 2 == 0, [1, 2, 3]) => True | ||
| - | </code> | ||
| - | |||
| - | |||
| <hidden> | <hidden> | ||