Exercicis Programació funcional

(*) elteuusuari correspon a la direcció de correu eltectrònic del centre, sense punts, fins a @itb.cat

Sumari

  1. Exercicis
    1. Introducció
      1. LamdaSample
        1. Input
        2. Output
      2. MethodReferenceSample
      3. FilterEmpoyeeById
        1. Input
        2. Output
    2. Comparator
      1. SortByLastDigit
      2. MostExpensiveProduct
        1. Input
        2. Output
    3. Streams
      1. MetersToCentimeters
        1. Input
        2. Output
      2. CountryDataSortByName
        1. Input
      3. FigurePainterNotGreen
      4. CountryDataSortAveragePopulation
        1. Input
      5. FromAvgSallaryInfoStream
      6. CountryDataUpdateNames
        1. Input
        2. Output
      7. EmbassatorsByBiggestCountry
        1. Input
      8. NearestTo100

Exercicis

Introducció

LamdaSample

Usant lambdes, llegeix una llista d'enters usant IntegerLists.readIntegerList.
Donats els enters, elimina els que acaben amb 3, ordena'ls de major a menor, i imprimieix-los per pantalla.

Input
43 65 2 75 1 54 73 23 33 65 25 73 425432 65 34 2 -1
Output
425432
75
65
65
65
54
34
25
2
2
1

MethodReferenceSample

Usant referencies a mètodes, llegeix una llista d'enters usant IntegerLists.readIntegerList.
Donats els enters, elimina els que acaben amb 3, ordena'ls de major a menor, i imprimieix-los per pantalla.

FilterEmpoyeeById

Usa la classe Employee de l'exercici EmpoyeeById, llegeix una llista (List) d'empleats per pantalla (primer s'introduirà el número d'empleats).

Elimina els empleats que tenen un DNI amb la lletra A i imprimeix la llista resultant.

Input
2
12345678Z
Mar
Puig
Av. Pi 42
87654321A
Ot
Pi
C. Mar 33
Output
Ot Pi - 87654321A, C. Mar 33

Comparator

SortByLastDigit

Donada la següent llista d'enters

List<Integer> list = Arrays.asList(253,432,65,234,43,16,28,432,34,65,312,34,2134,76,2,76,23,67,27,8,54235256,4560,7431);

Imprimeix-la ordenada per l'ultim digit de cada número.

[4560, 7431, 432, 432, 312, 2, 253, 43, 23, 234, 34, 34, 2134, 65, 65, 16, 76, 76, 54235256, 67, 27, 28, 8]

MostExpensiveProduct

Usa les classes i funcions de l'exercici UF2.MultiProductNiceInfoPrinter, llegeix un conjunt de productes, i imprimeix per pantalla el més car

Input
<<<<<<< HEAD
Taula 232,32 Cadira 90,90 Bolígraf 76,22 END
=======
3
Taula
232.32
Cadira
90.90
Bolígraf
76.22
>>>>>>> b6f6e67be60d7a963edfb9c467cd197e10549ea4
Output
El producte Taula val 232.32€

Streams

MetersToCentimeters

Llegeix una llista de distàncies per la consola (en format enter, usant IntegerLists.readIntegerList). Converteix cada una de les distàncies a cm i imprimeix-les per pantalla.

Input
43 65 3246 54329 43 5423 54 -1
Output
43000
65000
3246000
54329000
43000
5423000
54000

CountryDataSortByName

D'un païs ens en volem guardar la següent informació.

Imprimeix els països de més de amb una densitat superior a 5hab/km2, ordenats per ordre alfabètic.

L'usuari primer introduirà la quantitat de països a llegir.

Imprimeix els paisos ordenats per ordre alfabètic.

Input
5
Peru Lima 1285216 24
Australia Canberra 7702466 3
Marroc Casablanca 446650 66
Russia Moscou 17098242 8
Islandia Reikiavik 102800 3

FigurePainterNotGreen

Donades les següents figures:

List<Figure> figures = new ArrayList<>();

figures.add(new RectangleFigure(ConsoleColors.RED, 4, 5));
figures.add(new LeftPiramidFigure(ConsoleColors.YELLOW, 3));
figures.add(new RectangleFigure(ConsoleColors.GREEN, 3, 5));
figures.add(new RectangleFigure(ConsoleColors.BLUE, 1, 1));
figures.add(new LeftPiramidFigure(ConsoleColors.YELLOW, 4));
figures.add(new RectangleFigure(ConsoleColors.GREEN, 10, 5));
figures.add(new LeftPiramidFigure(ConsoleColors.YELLOW, 8));

Imprimeix per pantalla només les que no siguin verdes.

CountryDataSortAveragePopulation

Imprimeix la mitjana de població dels països de menys de 1200000 km2.

Input
5
Peru Lima 1285216 24
Australia Canberra 7702466 3
Marroc Casablanca 446650 66
Russia Moscou 17098242 8
Islandia Reikiavik 102800 3

FromAvgSallaryInfoStream

Fes l'exercici UF2.FromAvgSallaryInfo (pots usar les classes ja fetes), però fes els càlculs (mitjana i filtre) usant streams

CountryDataUpdateNames

Llegeix per pantalla una llista de països, modifica'n el nom i la capital per a que estiguin escrites en majúscules i imprimeix-los.

Input
5
Peru Lima 1285216 24
Australia Canberra 7702466 3
Marroc Casablanca 446650 66
Russia Moscou 17098242 8
Islandia Reikiavik 102800 3
Output
PERU LIMA 1285216 24
AUSTRALIA CANBERRA 7702466 3
MARROC CASABLANCA 446650 66
RUSSIA MOSCOU 17098242 8
ISLANDIA REIKIAVIK 102800 3

EmbassatorsByBiggestCountry

Ens volem guardar la informació de diferents embaixadors que hi ha a la nostre ciutat. Cada enbaixador ho és d'un país determinat.

Llegeix els països i els embaixadors.

Imprimeix per pantalla els diferents embaixadors ordenats per la mida del païs que representen (el més gran primer). En cas d'empat per ordre alfabètic dels cognoms i en cas d'empat per ordre alfabètic del nom.

Input
3
Peru Lima 1285216 24
Australia Canberra 7702466 3
Marroc Casablanca 446650 66
4
Mar
Pi
Peru
Ot
Om
Australia
Ona
Puig
Peru
Iun
Puig
Peru

NearestTo100

Llegeix una llista d'enters usant IntegerLists.readIntegerList.
Imprimeix per pantalla el número més pròxim a 100, i el més llunyà.