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.