2.3 Napis jako liczba trójkowa

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

Zadanie 2.3 (2 pkt): napis to liczba w systemie trójkowym (`o` = 0, `+` = 1, `*` = 2). Funkcja `value` liczy jej wartość schematem Hornera: każda kolejna cyfra to "dotychczasowy wynik razy 3 plus cyfra". `max(rows, key=value)` zwraca napis o największej wartości. Dla pliku przykładowego: 519789 `***+o*ooo++o`.

with open("symbole_przyklad.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)

print("2.1", palindromes)
print("2.2", len(squares), squares)
print("2.3", value(largest), largest)

Ł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.