3.3 Okna po sześć cyfr w pliku przykładowym

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

Zadanie 3.3 (3 pkt): ile jest ciągów rosnąco-malejących złożonych z dokładnie sześciu kolejnych cyfr. `digits[i:i + 6]` to okno sześciu cyfr od pozycji `i`. Dla pliku przykładowego arkusz podaje 3 (028841, 089986, 899862).

def rise_fall(seq):
    n = len(seq)
    if n < 4:
        return False
    up = 1  # długość rosnącego początku ciągu
    while up < n and seq[up - 1] < seq[up]:
        up = up + 1
    down = 1  # długość malejącego końca ciągu
    while down < n and seq[n - down - 1] > seq[n - down]:
        down = down + 1
    # część rosnąca ma k wyrazów, malejąca n - k: obie co najmniej 2, rosnąca mieści się
    # w rosnącym początku, a malejąca w malejącym końcu
    return max(2, n - down) <= min(up, n - 2)


with open("pi_przyklad.txt") as f:
    digits = [int(line) for line in f]  # jedna cyfra w każdym wierszu

# 3.3 wszystkie okna po 6 kolejnych cyfr
six = sum(1 for i in range(len(digits) - 5) if rise_fall(digits[i:i + 6]))

print("3.3", six)

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