2.1 Bloki w zapisie binarnym

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

**Zadanie 2. Liczby binarne.** Blok to najdłuższy ciąg jednakowych cyfr w zapisie binarnym: 111110000110111 ma pięć bloków (11111, 0000, 11, 0, 111). Arkusz w zadaniu 2.1 zabrania funkcji zamiany systemów, więc cyfry binarne zdejmuje się od końca: `n % 2` to ostatnia cyfra, `n // 2` ją usuwa. Nowy blok zaczyna się tam, gdzie cyfra jest inna niż poprzednia. Dla 67 (1000011) wynik to 3, dla 245 (11110101) to 5.

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


for n in [67, 245]:
    print(n, bin(n)[2:], blocks(n))

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