Planer przelotów
Statek na niskiej orbicie może rozmawiać ze stacją naziemną tylko wtedy, gdy jest nad jej horyzontem, po kilka minut naraz. Zespół dynamiki lotu przysyła czasy przelotów dla każdej stacji. Planowanie misji chce ich jako jednej osi czasu: które przeloty są wystarczająco długie na pełny zrzut danych, po kolei, i gdzie są okresy ciszy.
Zbuduj planer.
Ukończ etap 1, aby odblokować ten etap.
Zbierz każdy przelot dłuższy niż MIN_MINUTES, ze wszystkich stacji, w windows, jako (start, end, station, minutes) z czasami sparsowanymi przez datetime.fromisoformat(). Posortuj je według początku i wypisz:
Okna łączności dłuższe niż 8 minut: 06:30:00-06:44:00 Usuda 14.0 min 08:02:10-08:13:40 Kiruna 11.5 min 08:10:00-08:19:30 Svalbard 9.5 min 09:48:00-09:59:10 Svalbard 11.2 min 11:20:30-11:31:00 Kiruna 10.5 min 12:50:00-13:02:45 Toruń 12.8 min
Ponieważ każda krotka zaczyna się od czasu początku, windows.sort() ustawia je w kolejności czasu. {start:%H:%M:%S} formatuje samą godzinę.
Ukończ etap 1, aby odblokować ten etap.
Znajdź najdłuższą przerwę bez łączności z żadną stacją, między końcem jednego okna a początkiem następnego, i wypisz ją po liście:
Najdłuższa przerwa bez łączności: od 08:19:30 do 09:48:00 (1:28:30)
Okna mogą się nakładać: pierwszy przelot nad Svalbardem zaczyna się przed końcem przelotu nad Kiruną. Trzymaj najpóźniejszy koniec widziany do tej pory w latest_end i licz przerwę tylko wtedy, gdy następne okno zaczyna się po nim.
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:].