Skip to main content

Command Palette

Search for a command to run...

Matura informatyka 2021 maj (poziom rozszerzony) - zadanie 4.4

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

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

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