2.2 Liczby z najwyżej dwoma blokami w pliku przykładowym

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

Zadanie 2.2 (2 pkt): ile liczb z pliku `bin.txt` ma co najwyżej dwa bloki. W zadaniach 2.2-2.5 to już zwykły program, więc wiersz pliku zamienia na liczbę `int(s, 2)` (napis w systemie o podstawie 2), a bloki liczy funkcja z zadania 2.1. Dla pliku `bin_przyklad.txt` arkusz podaje odpowiedź: 3.

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_przyklad.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)

print("2.2", few_blocks)

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