Skip to main content

Command Palette

Search for a command to run...

Matura informatyka 2021 maj (poziom rozszerzony) - zadanie 4.1

Updated
2 min read
Matura informatyka 2021 maj (poziom rozszerzony) - zadanie 4.1

Treść zadania:

Pewna firma przygotowuje wyświetlanie napisów złożonych z wielkich liter alfabetu angielskiego. Na początku napis jest pusty (nie zawiera liter). W pliku instrukcje.txt podanych jest 2000 instrukcji, które wykonuje automat do generowania napisu. Każda z instrukcji składa się z polecenia, spacji oraz pojedynczego znaku. Polecenia są czterech rodzajów:

DOPISZ litera – oznacza, że na końcu napisu trzeba dopisać pojedynczą literę;

ZMIEN litera – oznacza, że ostatnią literę aktualnego napisu należy zmienić na podaną literę (możesz założyć, że napis jest niepusty);

USUN 1 – oznacza, że należy usunąć ostatnią literę aktualnego napisu (możesz założyć, że napis jest niepusty);

PRZESUN litera – oznacza, że pierwsze od lewej wystąpienie podanej litery w napisie należy zamienić na następną literę w alfabecie (jeśli litera to A, to należy zamienić na B, jeśli B, to na C itd.) Literę Z należy zamienić na A. Jeśli litera nie występuje w napisie, nie należy nic robić.

Oblicz całkowitą długość napisu po wykonaniu wszystkich instrukcji z pliku instrukcje.txt. Dla pliku przyklad.txt długością napisu jest liczba 10.

Rozwiązanie (i cały program):

Dla każdej linii pozbywamy się znaku nowej linii (\n). Deklarujemy licznik operations_count i dla każdej linii w liście sprawdzamy, jaka operacja ma zostać wykonana. Jeśli operacja zaczyna się na DOPISZ - dodajemy 1. Jeśli zaś USUN , odejmujemy. Korzystamy z metody startswith , żeby pominąć parametr operacji (np.: literę).

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

operations_count = 0

for operation in operations:
    if operation.startswith("DOPISZ"):
        operations_count += 1
    elif operation.startswith("USUN"):
        operations_count -= 1

print(operations_count)

Wynik:

517

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