6.3 Symulacja produkcji

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

Zadania 6.3 i 6.4 (po 3 pkt): co dzień rano dostawa trafia do zapasu, potem powstaje konfitura z dwóch owoców, których jest najwięcej, w proporcji 1:1 z całego mniejszego zapasu. Reszta czeka w chłodni do jutra. Lista `stock` to zapas, `stock.index(min(stock))` wskazuje owoc, którego dziś się nie bierze. Program wypisuje dwa pierwsze dni (jak przykład z arkusza: 211 kg i 393 kg konfitury malinowo-truskawkowej) i wyniki dla pliku przykładowego.

deliveries = []
with open("owoce_przyklad.txt") as f:
    f.readline()  # wiersz nagłówkowy
    for line in f:
        day, raspberries, strawberries, currants = line.split("\t")
        deliveries.append((day, int(raspberries), int(strawberries), int(currants)))

# 6.3 i 6.4 symulacja: zapas po porannej dostawie, konfitura z dwóch owoców, których jest najwięcej
JAMS = {(0, 1): "malinowo-truskawkowe", (0, 2): "malinowo-porzeczkowe", (1, 2): "truskawkowo-porzeczkowe"}
stock = [0, 0, 0]  # maliny, truskawki, porzeczki w przetwórni
times = {name: 0 for name in JAMS.values()}
kilograms = {name: 0 for name in JAMS.values()}
for day, raspberries, strawberries, currants in deliveries:
    stock[0] += raspberries
    stock[1] += strawberries
    stock[2] += currants
    smallest = stock.index(min(stock))  # tego owocu dziś nie bierzemy
    pair = tuple(k for k in range(3) if k != smallest)
    used = min(stock[pair[0]], stock[pair[1]])  # proporcja 1:1, cały mniejszy zapas
    if day in ("01.05.2020", "02.05.2020"):
        print(day, "zapas:", stock, JAMS[pair], used, "kg")
    stock[pair[0]] -= used
    stock[pair[1]] -= used
    times[JAMS[pair]] += 1
    kilograms[JAMS[pair]] += used  # 1 kg konfitury = po 1 kg obu owoców

print(times)
print(kilograms)

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