Odszumiacz alarmów
Gdy silnik się przegrzewa, jego czujnik co kilka sekund zgłasza ten sam alarm, a ekran kontrolerów lotu zapełnia się kopiami, aż jedyny ważny alarm ucieka poza ekran. Każdy porządny system monitoringu grupuje powtórzenia.
Złącz powtórzenia z 60 sekund w jedną linię z liczbą i zachowaj wszystko w kolejności, w jakiej się działo.
Ukończ etap 1, aby odblokować ten etap.
Złącz powtórzenia tego samego alarmu, tego samego źródła i wiadomości, które przychodzą w ciągu WINDOW_S sekund od pierwszego, w jedną linię z liczbą. Powtórzenie po tym czasie zaczyna nową linię. Zachowaj linie w kolejności pojawienia się ich pierwszego alarmu:
09:30:05 ENG-2 Wysoka temperatura (x3) 09:30:31 TANK-1 Spada ciśnienie (x2) 09:31:10 ENG-2 Wysoka temperatura 09:31:40 COMMS Słaby sygnał 09:33:00 TANK-1 Spada ciśnienie 09:33:05 COMMS Słaby sygnał (x2)
Trzymaj grupy jako słowniki na liście groups, z first, last, source, message i count, oraz słownik z (source, message) do najnowszej grupy dla tego alarmu. to_seconds() jest podana.
Ukończ etap 1, aby odblokować ten etap.
Dla linii, która łączy kilka alarmów, pokaż czas pierwszego i ostatniego, a na końcu wypisz, ile alarmów przyszło i ile linii wyszło:
09:30:05-09:30:52 ENG-2 Wysoka temperatura (x3) 09:30:31-09:31:15 TANK-1 Spada ciśnienie (x2) 09:31:10 ENG-2 Wysoka temperatura 09:31:40 COMMS Słaby sygnał 09:33:00 TANK-1 Spada ciśnienie 09:33:05-09:33:20 COMMS Słaby sygnał (x2) Alarmy na wejściu: 10, linie na wyjściu: 6
Podpowiedzi
Iterowanie po słowniku
# Iterowanie po słowniku
distances = {
"Księżyc": 384400,
"Mars": 225000000,
"Wenus": 108000000
}
# Iterowanie po kluczach
print("Cele:")
for target in distances:
print(f" - {target}")
# Iterowanie po wartościach
print("\nOdległości:")
for km in distances.values():
print(f" {km:,} km")
# Iterowanie po parach
print("\nKompletne dane:")
for target, km in distances.items():
print(f" {target}: {km:,} km")
Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].