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.