# Matura informatyka 2021 maj (poziom rozszerzony) - zadanie 4.3

## **Treść zadania:**

Oblicz, która litera jest najczęściej dopisywana (najczęściej występuje w instrukcji DOPISZ). Podaj tę literę oraz ile razy jest dopisywana. Istnieje tylko jedna taka litera.

Dla pliku `przyklad.txt` odpowiedzią jest litera U, dopisywana 3 razy.

## **Rozwiązanie (i cały program):**

W `list comprehension` poza standardowym `.strip()` odpowiedzialnym w tym przypadku za usunięcie znaku nowej linii rozdzielam również operację od jej argumentu i zostawiam sam argument, np.:

```python
"DOPISZ E".split(" ")[1]
# taki kod zwróci nam samo "E"
```

Dodatkowo, przy pomocy `if operation.startswith("DOPISZ")` odfiltrowuję wszystkie linijki, które nie zaczynają się na `DOPISZ`.

Jedyne, co pozostało do zrobienia to zliczenie dla każdej liczby ilości jej wystąpień i wypisanie znaku z największą ich liczbą:

```python
from collections import Counter

with open("dane/instrukcje.txt", "r") as f:
    operations = [operation.strip().split(" ")[1] for operation in f.readlines() if operation.startswith("DOPISZ")]

print(Counter(operations).most_common(1))
```

`Counter` jest bardzo przydatnym narzędziem umożliwiającym skorzystanie z wbudowanej w bibliotekę standardową abstrakcji. Jego odpowiednik zapisany w postaci pętli w tym przypadku to:

```python
with open("dane/instrukcje.txt", "r") as f:
    operations = [operation.strip().split(" ")[1] for operation in f.readlines() if operation.startswith("DOPISZ")]

counter = {}

for operation in operations:
    counter[operation] = counter.get(operation, 0) + 1

sorted_pairs = sorted(counter.items(), key=lambda pair: pair[1], reverse=True)
print(sorted_pairs[0])
```

# Wynik:

`[('Z', 37)]`

%[https://replit.com/@Onix95/43-maj-2021] 

Źródło: [https://arkusze.pl/matura-informatyka-2021-maj-poziom-rozszerzony/](https://arkusze.pl/matura-informatyka-2021-maj-poziom-rozszerzony/)
