2. Całe zadanie: wyniki2.txt i wyniki2_5.txt
Matura maj 2023 - Matura z informatyki: arkusze krok po kroku (Python)
Pełne rozwiązanie zadań 2.2, 2.3 i 2.5 jednym programem na pliku `bin.txt`, z plikami wyników nazwanymi jak w arkuszu.
def blocks(n):
b = 1
previous = n % 2 # ostatnia cyfra zapisu binarnego
n = n // 2
while n > 0:
digit = n % 2
if digit != previous: # inna cyfra niż poprzednia: zaczyna się nowy blok
b = b + 1
previous = digit
n = n // 2
return b
with open("bin.txt") as f:
numbers = [line.strip() for line in f] # zapisy binarne jako napisy
# 2.2 liczby z co najwyżej dwoma blokami (funkcja z zadania 2.1 na wartości liczby)
few_blocks = sum(1 for s in numbers if blocks(int(s, 2)) <= 2)
# 2.3 największa liczba: porównujemy wartości, a nie napisy (jako napisy "111" > "1000")
largest = max(numbers, key=lambda s: int(s, 2))
# 2.5 p XOR (p div 2): operator ^ działa na bitach, bin(x)[2:] to zapis binarny bez "0b"
codes = []
for s in numbers:
p = int(s, 2)
codes.append(bin(p ^ (p // 2))[2:])
with open("wyniki2.txt", "w", encoding="utf-8") as out:
print("2.2", few_blocks, file=out)
print("2.3", largest, file=out)
with open("wyniki2_5.txt", "w", encoding="utf-8") as out:
for code in codes:
print(code, file=out)
print(open("wyniki2.txt", encoding="utf-8").read())
print(codes[:5])Ł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.