# 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.

```python
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](https://www.geeksforgeeks.org/python-list-slicing/). 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.:

```python
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:

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

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

```python
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`

%[https://replit.com/@Onix95/42-czerwiec-2021#.replit] 

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