3.3 Ciąg rosnąco-malejący
Matura maj 2023 - Matura z informatyki: arkusze krok po kroku (Python)
Ciąg co najmniej 4-wyrazowy jest **rosnąco-malejący**, gdy da się go podzielić na część ściśle rosnącą i ściśle malejącą, obie co najmniej 2-wyrazowe. Funkcja liczy długość rosnącego początku i malejącego końca, a potem sprawdza, czy podział jest możliwy. Uwaga na ciąg (5, 9, 9, 4, 1): jest rosnąco-malejący, bo podział (5, 9) i (9, 4, 1) jest poprawny. Program sprawdza wszystkie przykłady z arkusza.
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)
for seq in [(2, 5, 7, 9, 8, 3, 1), (5, 9, 9, 4, 1), (2, 5, 8, 4, 3, 4, 5), (1, 2, 3, 4), (5, 5, 3, 2, 1), (1, 2, 3, 4, 5, 4)]:
print(seq, rise_fall(seq))Ł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.