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

## **Treść zadania:**

Palindromem nazywamy napis, który czytany od początku lub od końca jest taki sam (np. KAJAK). Część napisów zapisanych w wierszach pliku (każdy ma 50 znaków) można w prosty sposób – przez dodanie dokładnie jednego znaku na początku lub na końcu napisu – zamienić na palindrom.

Podaj hasło utworzone przez środkowe litery tak utworzonych palindromów.

Dla danych z pliku `przyklad.txt` wynikiem jest: **INFORMATYKA**

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

Dla każdej linii (po ich wcześniejszym odczytaniu z pliku) tworzymy 2 warianty palindromów:

* pierwszy - z ostatnią literą na początku,
    
* drugi - z pierwszą literą na końcu.
    

Wyznaczamy środkowy indeks - można byłoby przypisać bezpośrednio liczbę `25` , ponieważ mamy zapewnienie z zadania, że każdy wiersz ma 50 znaków, a `(50 + 1) // 2 = 25` , ale jakoś... dziwnie tak :D  
Następnie jeżeli wariant 1 równa się swojej odwrotności `[::-1]` (opcjonalnie można byłoby użyć funkcji `reversed(variant)` ), to dopisujemy znak z indeksu 25 do hasła. Jeśli nie, to sprawdzamy jeszcze wariant 2. Na końcu wypisujemy hasło!

```python
with open("dane/napisy.txt", "r") as f:
    lines = [line.strip() for line in f.readlines()]

password = ""

for line in lines:
    variant_1 = f"{line[-1]}{line}"
    variant_2 = f"{line}{line[0]}"

    middle_index = len(variant_1) // 2

    if variant_1 == variant_1[::-1]:
        password += variant_1[middle_index]
    elif variant_2 == variant_2[::-1]:
        password += variant_2[middle_index]

print(password)
```

# **Wynik:**

`ZADANIEMATURALNE`

%[https://replit.com/@Onix95/43-czerwiec-2021#4/4_3.py] 

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