4.3 Zbiornik w wycinku

Matura próbna grudzień 2022 - Matura z informatyki: arkusze krok po kroku (Python)

Zadanie 4.3 (4 pkt): 1 stycznia rano w zbiorniku jest 5000 l. Każdego dnia najpierw deszcz trafia do zbiornika, potem rodzina zużywa 190 l (w środę 260 l, plus 300 l w dzień podlewania). Gdy wody brakuje, zbiornik się opróżnia, a brakująca część idzie z wodociągu. Ile dni brakowało wody i ile litrów pobrano z wodociągu? Dla wycinka: 68 dni, 13338 l.

from datetime import date

days = []  # (data, litry zebranej wody)
with open("ekodom_przyklad.txt") as f:
    f.readline()  # wiersz nagłówkowy
    for line in f:
        text, water = line.split("\t")
        day = date(int(text[6:10]), int(text[3:5]), int(text[0:2]))  # dd.mm.rrrr
        days.append((text, day, int(water)))

def garden(day, dry):
    # podlewanie od 1.04 do 30.09 w 5., 10., 15., ... dniu bez opadów
    return date(day.year, 4, 1) <= day <= date(day.year, 9, 30) and dry > 0 and dry % 5 == 0

# 4.3 symulacja: rano deszcz trafia do zbiornika, potem zużycie; brak wody = wodociąg
tank = 5000
short_days, from_mains, dry = 0, 0, 0
for text, day, water in days:
    tank = tank + water
    dry = dry + 1 if water == 0 else 0
    use = 260 if day.weekday() == 2 else 190  # weekday(): 0 = poniedziałek, 2 = środa
    if garden(day, dry):
        use = use + 300
    if tank < use:
        short_days = short_days + 1
        from_mains = from_mains + use - tank
        tank = 0
    else:
        tank = tank - use

print("4.3", short_days, from_mains)

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