Zdublowane zdarzenia
Łącze radiowe z kapsułą gra bezpiecznie: gdy nie jest pewne, czy zdarzenie dotarło, wysyła je ponownie. Centrum Kontroli Misji woli dostać zdarzenie dwa razy niż wcale, ale tablica zdarzeń musi pokazać każde raz.
Odrzuć powtórzone zdarzenia, a potem zgłoś, które się powtórzyły.
Ukończ etap 1, aby odblokować ten etap.
Wypisz każde zdarzenie raz, zachowując pierwszą kopię, i policz odrzucone kopie:
EV-1001 Hatch closed EV-1002 Cabin pressure nominal EV-1003 Abort system armed EV-1004 Switched to internal power Odrzucone duplikaty: 2
Trzymaj już wypisane identyfikatory w zbiorze: zacznij od seen = set(), pomijaj zdarzenie, którego identyfikator jest in seen, i dodawaj przez seen.add() identyfikator każdego wypisanego zdarzenia.
Ukończ etap 1, aby odblokować ten etap.
Inżynierowie łącza chcą wiedzieć, które identyfikatory przyszły więcej niż raz. Zbierz je w drugim zbiorze i wypisz posortowane albo brak:
EV-1001 Hatch closed EV-1002 Cabin pressure nominal EV-1003 Abort system armed EV-1004 Switched to internal power Odrzucone duplikaty: 2 Powtórzone identyfikatory: EV-1001, EV-1002
Dodawaj identyfikator do repeated tam, gdzie liczysz duplikat. Zdarzenie wysłane trzy razy to nadal jeden powtórzony identyfikator.
Podpowiedzi
Operacje na zbiorach
# Modyfikowanie zbiorów
stations = {"ISS", "Mir", "Skylab"}
# Dodawanie elementu
stations.add("Tiangong")
print("Po dodaniu:", stations)
# Usuwanie elementu
stations.remove("Mir")
print("Po usunięciu:", stations)
# discard - nie zgłasza błędu gdy brak
stations.discard("Nieistniejąca")
print("Po discard:", stations)
# pop - usuwa losowy element
removed = stations.pop()
print("Usunięty:", removed)
print("Pozostałe:", stations)
# Czyszczenie
copy = {"a", "b", "c"}
copy.clear()
print("Po clear:", copy)
Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].