# Matura informatyka 2021 maj (poziom rozszerzony) - zadanie 4.4

## **Treść zadania:**

Podaj napis, który powstanie po wykonaniu wszystkich instrukcji z pliku `instrukcje.txt`.

Dla pliku `przyklad.txt` wynikiem jest napis ALANTURING.

## **Rozwiązanie (i cały program):**

Dla każdej operacji sprawdzamy, która instrukcja została wywołana. `DOPISZ` jest raczej proste :) W przypadku `ZMIEN` i `USUN` slice'ujemy aktualny wynik do ostatniego znaku (nie włączając go - `:-1`). Dla `ZMIEN` Dodatkowo dodajemy argument instrukcji.  
Dla instrukcji `PRZESUN` musimy wyznaczyć nową literę. Można to osiągnąć, odejmując od reprezentacji ASCII oryginalnej litery 64 - gdybyśmy odjęli w tym przypadku 65, cała operacja `chr(((ord(argument) - 64) % 26) + 65)` nie zmieniłaby nic, w tym przypadku różnica `65 - 1` to nasze przesunięcie.  
Ważne jest, aby do metody `replace`, która zwraca **kopię**, przekazać trzeci parametr mówiący ile wystąpień sekwencji (w naszym przypadku znaku) od lewej należy zastąpić. Dla tego zadania jest to 1.

```python
with open("dane/instrukcje.txt", "r") as f:
    operations = [operation.strip() for operation in f.readlines()]

result = ""

for operation in operations:
    instruction, argument = operation.split(" ")
    if instruction == "DOPISZ":
        result += argument
    elif instruction == "ZMIEN":
        result = result[:-1] + argument
    elif instruction == "USUN":
        result = result[:-1]
    elif instruction == "PRZESUN":
        new_letter = chr(((ord(argument) - 64) % 26) + 65)
        result = result.replace(argument, new_letter, 1)

print(result)
```

# Wynik:

`POZNIEJMOWIONOZECZLOWIEKTENNADSZEDLODPOLNOCYODBRAMYPOWROZNICZEJSZEDLPIESZOAOBJUCZONEGOKONIAPROWADZILZAUZDEBYLOPOZNEPOPOLUDNIEIKRAMYPOWROZNIKOWIRYMARZYBYLYJUZZAMKNIETEAULICZKAPUSTABYLOCIEPLOACZLOWIEKTENMIALNASOBIECZARNYPLASZCZNARZUCONYNARAMIONAZWRACALUWAGEZATRZYMALSIEPRZEDGOSPODASTARYNARAKORTPOSTALCHWILEPOSLUCHALGWARUGLOSOWGOSPODAJAKZWYKLEOTEJPORZEBYLAPELNALUDZINIEZNAJOMYNIEWSZEDLDOSTAREGONARAKORTUPOCIAGNALKONIADALEJWDOLULICZKITAMBYLADRUGAKARCZMAMNIEJSZANAZYWALASIEPODLISEMTUBYLOPUSTOKARCZMANIEMIALANAJLEPSZEJSLAWY`

%[https://replit.com/@Onix95/44-maj-2021] 

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