Rozwiązanie
Zadanie 4.3 – matura 2021, próbna

Zadanie 4.3 (0-4)

Galerie handlowe
Galerie handlowe
Firma Igloo planuje w wybranych miastach Europy wybudować galerie handlowe. W każdej  z planowanych galerii może znajdować się różna liczba lokali handlowych. Wszystkie lokale  handlowe będą miały kształt prostokąta. 
W pliku galerie.txt zapisanych jest 50 wierszy z informacjami dotyczącymi planowanych  galerii. Każdy wiersz w pliku to informacja o jednej galerii. Dane oddzielone są spacją  i zawierają odpowiednio: 
- kod kraju;
- nazwę miasta (nazwy miast nie powtarzają się);
- 70 par liczb (140 liczb) określających wymiary (długość i szerokość w metrach) lokali  handlowych, które znajdować się będą w danej galerii. 
Jeżeli liczba lokali w galerii jest  mniejsza niż 70, to wiersz uzupełniony jest zerami.
Przykład:
NL Amsterdam 8 4 5 12 7 5 5 11 9 4 7 6 … 0 0 0 0 0 0
Do Twojej dyspozycji jest pomocniczy plik galerie_przyklad.txt, zawierający 10 wierszy, który możesz wykorzystać, aby sprawdzić poprawność działania swojego(-ich) programu(-ów).
Napisz program(-y), w wyniku działania którego(-ych) otrzymasz odpowiedzi do podanych zadań. Pliki źródłowe z rozwiązaniem zapisz pod nazwą zgodną z numerem zadania, z rozszerzeniem odpowiadającym użytemu narzędziu informatycznemu.Powiemy, że dwa lokale są tego samego rodzaju, jeżeli ich powierzchnia jest taka sama. 
W którym mieście powstanie galeria z największą liczbą różnych rodzajów lokali (jest jedno  takie miasto), a w którym powstanie galeria z najmniejszą liczbą różnych rodzajów lokali (jest  jedno takie miasto)? Podaj te miasta oraz liczby różnych rodzajów lokali w tych miastach.
Wynik zapisz w pliku wynik4_3.txt. W każdym z dwóch wierszy pliku powinny znajdować  się nazwa miasta oraz liczba różnych rodzajów lokali w tym mieście.
Prawidłowa odpowiedź dla danych pliku galerie_przyklad.txt:
Dusseldorf 34
Genua 23
Rozwiązanie zadań w Pythonie:
print("Zadanie 3.")
unik_lok_gal = {} # unikalne lokale galerii
for galeria in galerie:
    miasto = galeria.split()[1]
    powierzchnie = galeria.split()[2:]
    unikalne_lokale = set() # set przechowuje tylko unikalne wartości
    for i in range(0, 140, 2):
        if int(powierzchnie[i]) == 0:
            break
        pow_lokalu = int(powierzchnie[i])*int(powierzchnie[i+1])
        unikalne_lokale.add(pow_lokalu)
    unik_lok_gal[miasto] = len(unikalne_lokale) # ile jest unikalnych lokali

najw = sorted(unik_lok_gal.items(), key=lambda lokal: lokal[1])[0] 
najm = sorted(unik_lok_gal.items(), key=lambda lokal: lokal[1])[-1]
print(najw[0], najw[1])
print(najm[0], najm[1])
Pobierz rozwiązanie
Wyszukaj więcej zadań z tego arkusza...