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/



