Skip to main content

Command Palette

Search for a command to run...

Matura informatyka 2021 czerwiec (poziom rozszerzony) - zadanie 4.4

Updated
2 min read
Matura informatyka 2021 czerwiec (poziom rozszerzony) - zadanie 4.4

Treść zadania:

Ostatnie z haseł zostało ukryte w cyfrach zapisanych w pliku napisy.txt. Aby je odczytać, należy cyfry z każdego wiersza pogrupować po dwie, pomijając ostatnią, jeśli w wierszu jest nieparzysta liczba cyfr. Jeżeli liczba utworzona przez parę cyfr jest mniejsza od 65 lub większa od 90, to ją pomijamy, w przeciwnym przypadku taką liczbę zamieniamy na znak o kodzie ASCII odpowiadającym tej liczbie. Poszukiwanie hasła kończy się po otrzymaniu trzech kolejnych znaków „X”. Odczytaj z pliku tak ukryte hasło.

Dla danych z pliku przyklad.txt wynikiem jest: NAPISANIEMATURYXXX

Rozwiązanie (i cały program):

Dla każdej linii wybieramy tylko te znaki, które są cyframi. Następnie, jeśli hasło kończy się na 3 znaki X (warunek zadania) możemy stwierdzić, że zakończyliśmy szukanie hasła - to nasz warunek bazowy.

W przeciwnym wypadku, dla każdej pary (robimy to przy pomocy podania 2 , jako trzeciego parametru funkcji range, co pozwala nam na "przeskakiwanie" par) sprawdzamy, czy wcześniej wspomniane znaki mieszczą się w zakresie 65 <= 90.

Jeśli tak, dopisujemy je do hasła, a po skończeniu pętli wypisujemy je na ekran!

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

password = ""

for line in lines:
    digits = "".join(character for character in line if character.isdigit())

    if password.endswith("XXX"):
        break

    for index in range(0, len(digits), 2):
        potential_char = int(digits[index:index+2])
        if 65 <= potential_char <= 90:
            password += chr(potential_char)

print(password)

Wynik:

LITWOOJCZYZNOMOJATYJESTESJAKZDROWIEILECIETRZEBACENICTENTYLKOSIEDOWIEKTOCIESTRACILNATENCZASWOJSKICHWYCILNATASMIEPRZYPIETYSWOJROGBAWOLIDLUGICENTKOWANYKRETYJAKWAZBOAXXX

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