Skip to main content

Command Palette

Search for a command to run...

Matura informatyka 2021 czerwiec (poziom rozszerzony) - zadanie 4.3

Updated
1 min read
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/

More from this blog

matura z infy

17 posts