Skip to main content

Command Palette

Search for a command to run...

Matura informatyka 2021 czerwiec (poziom rozszerzony) - zadanie 4.2

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

Treść zadania:

W pliku napisy.txt ukryto pewne pięćdziesięcioznakowe hasło w następujący sposób: – w co dwudziestym wierszu (w wierszach o numerach 20, 40, 60, …, 1000), ukryto dokładnie jedną literę hasła;

– ukryta litera w kolejnych wierszach zawsze znajduje się na innej pozycji: w 20 wierszu na pierwszej, w 40 wierszu na drugiej, w 60 wierszu na trzeciej, …, w 1000 na pięćdziesiątej. Podaj to hasło.

Dla danych z pliku przyklad.txt wynikiem jest:

UDALOSIEIZDAJEMYEGZAMINYMATURALNEZWIELUPRZEDMIOTOW

Rozwiązanie (i cały program):

Kolejne krótkie zadanie :D Całość sprowadza się do odczytania linii z pliku, a następnie przeiterowaniu przez co dwudziestą linię od dwudziestej (indeks nr 19 - bo liczymy od zera :P ), pobierając znak o indeksie większym o jeden niż ostatnio.

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

password = ""
offset_num = 0

for line in lines[19::20]:
    password += line[offset_num]
    offset_num += 1

print(password)

Jeśli nie wiesz, co robi podwójny :: przy lines, to jest to tzw. "list slicing". Możesz przeczytać o nim więcej tutaj. W gruncie rzeczy liczba pierwsza od lewej oznacza indeks, od którego zaczynamy pobierać nasz "kawałek" tablicy, kolejna (pomiędzy dwoma dwukropkami - jak widać, można ją pominąć, zostawiając :: ) oznacza indeks, na jakim chcemy się zatrzymać - bez włączania ostatniego, np.:

simple_list = [0,1,2,3,4,5]
print(simple_list[2:4])

Da nam cyfry [2,3] - bo zaczynamy od indeksu 2 i kończymy na 4, nie włączając go.

Ostatnia liczba oznacza krok iteracji, w naszym przypadku "co dwudziesty element".

W przypadku:

simple_list = [0,1,2,3,4,5]
print(simple_list[::2])

Otrzymamy [0, 2, 4] skacząc co drugie pole, a dla:

simple_list = [0,1,2,3,4,5]
print(simple_list[1::2])

Otrzymamy [1,3,5] , gdyż zaczęliśmy od indeksu nr 1 :)

Wynik:

SZYBKOROZWIAZUJEPROGRAMISTYCZNEZADANIAZINFORMATYKI

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

More from this blog

matura z infy

17 posts