2.4 Suma w zapisie symbolicznym
Matura maj 2025 - Matura z informatyki: arkusze krok po kroku (Python)
Zadanie 2.4 (3 pkt): suma wszystkich liczb dziesiętnie i w zapisie symbolami. Zamiana na system trójkowy: reszta z dzielenia przez 3 to ostatnia cyfra, dzielenie całkowite przez 3 ją usuwa. Cyfry powstają od końca, więc każdą dokleja się na początek napisu. Dla pliku przykładowego: 4841542 `+oooo****+oo+o+`. Za zapis cyframi 0, 1, 2 zamiast symboli jest tylko 1 z 2 punktów za ten element.
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)
# 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"
print("2.1", palindromes)
print("2.2", len(squares), squares)
print("2.3", value(largest), largest)
print("2.4", total, to_symbols(total))Ł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.