4.3 Sklejanie prostokątów w pliku przykładowym

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

Zadanie 4.3 (4 pkt): największa szerokość po sklejeniu dokładnie 2, 3 i 5 prostokątów o tej samej wysokości. Najpierw słownik: wysokość -> lista szerokości, potem w każdej grupie z co najmniej \( k \) prostokątami suma \( k \) największych szerokości. Dla pliku przykładowego: 183, 266 i 409.

rectangles = []
with open("prostokaty_przyklad.txt") as f:
    for line in f:
        h, s = line.split()  # wysokość, szerokość
        rectangles.append((int(h), int(s)))

# 4.3 sklejać można tylko prostokąty o tej samej wysokości: szerokości grupowane po wysokości
widths = {}
for h, s in rectangles:
    if h not in widths:
        widths[h] = []
    widths[h].append(s)
glued = {}
for k in (2, 3, 5):
    glued[k] = 0
    for h, row in widths.items():
        if len(row) >= k:
            top = sum(sorted(row, reverse=True)[:k])  # k najszerszych tej wysokości
            glued[k] = max(glued[k], top)

print("4.3")
for k in (2, 3, 5):
    print(k, glued[k])

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