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!
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
Źródło: https://arkusze.pl/matura-informatyka-2021-czerwiec-poziom-rozszerzony/




