2. Całe zadanie: plik wyniki2.txt

Matura maj 2025 - Matura z informatyki: arkusze krok po kroku (Python)

Pełne rozwiązanie zadania 2 jednym programem: wszystkie kroki na pliku `symbole.txt` i jeden plik `wyniki2.txt` z odpowiedziami 2.1-2.4, każda poprzedzona numerem. Na egzaminie oddaje się ten plik i kod programu.

with open("symbole.txt") as f:
    rows = [line.strip() for line in f]

# 2.1 palindrom: napis czytany od tyłu (row[::-1]) jest taki sam
palindromes = [row for row in rows if row == row[::-1]]

# 2.2 kwadrat 3x3: środek nie leży na brzegu, więc wiersze 1..n-2 i pozycje 1..10
squares = []
for i in range(1, len(rows) - 1):
    for j in range(1, 11):
        symbol = rows[i][j]
        if all(rows[i + di][j + dj] == symbol for di in (-1, 0, 1) for dj in (-1, 0, 1)):
            squares.append((i + 1, j + 1))  # numeracja od 1, jak w arkuszu

# 2.3 napis jako liczba trójkowa: o = 0, + = 1, * = 2
DIGITS = "o+*"


def value(row):
    result = 0
    for symbol in row:
        result = result * 3 + DIGITS.index(symbol)  # schemat Hornera
    return result


largest = max(rows, key=value)

# 2.4 suma i zamiana z powrotem: kolejne reszty z dzielenia przez 3 to cyfry od końca
total = sum(value(row) for row in rows)


def to_symbols(n):
    text = ""
    while n > 0:
        text = DIGITS[n % 3] + text
        n = n // 3
    return text or "o"

with open("wyniki2.txt", "w", encoding="utf-8") as out:
    print("2.1", file=out)
    for row in palindromes:
        print(row, file=out)
    print("2.2", len(squares), file=out)
    for row, column in squares:
        print(row, column, file=out)
    print("2.3", value(largest), largest, file=out)
    print("2.4", total, to_symbols(total), file=out)

print(open("wyniki2.txt", encoding="utf-8").read())

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu Matura z informatyki: arkusze krok po kroku·Zaloguj się, aby zapisać postęp na koncie.