7.2 Najdłuższy okres pomiarów

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

Zadanie 7.2 (2 pkt): łazik, który mierzył najdłużej (od pierwszego do ostatniego pomiaru), i daty tych pomiarów. Daty w formacie RRRR-MM-DD można porównywać jak napisy, a długość okresu to różnica dat z modułu `datetime`.

from datetime import date

def load(name):
    # plik z nagłówkiem, pola rozdzielone tabulatorami
    with open(name, encoding="utf-8") as f:
        next(f)
        return [line.rstrip("\n").split("\t") for line in f]


rovers = {row[0]: row for row in load("laziki.txt")}  # nr -> nr, nazwa, rok, współrzędne
areas = {code: name for code, name in load("obszary.txt")}
surveys = load("pomiary_przyklad.txt")  # nr łazika, data, kod obszaru, współrzędne, głębokość, ilość

# 7.1 woda na głębokości do 100 m, zsumowana dla obszaru (klucz = kod, odpowiedź = nazwa)
water = {}
for rover, day, code, place, depth, amount in surveys:
    if int(depth) <= 100:
        water[code] = water.get(code, 0) + int(amount)
wettest = areas[max(water, key=water.get)]

# 7.2 okres pracy łazika: najwcześniejsza i najpóźniejsza data (daty ISO porównują się jak napisy)
span = {}
for rover, day, code, place, depth, amount in surveys:
    low, high = span.get(rover, (day, day))
    span[rover] = (min(low, day), max(high, day))
longest = max(span, key=lambda r: date.fromisoformat(span[r][1]) - date.fromisoformat(span[r][0]))

print("7.1", wettest)
print("7.2", rovers[longest][1], *span[longest])

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