Space Python Ładowanie Pythona…

Odszumiacz alarmów

Napisz kodTrudny 2 etapy

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.

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.

Sześć linii
Lista groups

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
Zakresy i sumy
Nie jesteś zalogowany, więc postęp zostaje tylko w tej przeglądarce. Zaloguj się, aby go zapisać i korzystać z podpowiedzi oraz rozwiązań.

Podpowiedzi

Iterowanie po słowniku

Pętla for domyślnie iteruje po kluczach. values() zwraca wartości. items() zwraca pary klucz-wartość do rozpakowania.
iterowanie-po-slowniku.py
# 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")
Otwórz cały przykład
script.py
PythonWiersz 1, kol. 1Spacje: 4
Ładowanie środowiska Pythona…

Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].