Siatka odłamków
Przed każdym manewrem podnoszenia orbity radar skanuje sektor przed statkiem i odsyła małą mapę: każdy wiersz to napis, # oznacza odłamki, a . wolną przestrzeń. Zespół dynamiki lotu potrzebuje dokładnego położenia każdego odłamka.
Przeszukaj siatkę w poszukiwaniu odłamków, a potem znajdź kolumny, przez które statek mógłby przelecieć.
Ukończ etap 1, aby odblokować ten etap.
Znajdź każdy #, wiersz po wierszu, i wypisz jego wiersz i kolumnę, obie liczone od 0, tak jak indeksy. Potem wypisz, ile ich jest:
Odłamki w wierszu 0, kolumnie 2 Odłamki w wierszu 2, kolumnie 5 Odłamki w wierszu 3, kolumnie 0 Trafienia: 3
Przejdź pętlą po wierszach z enumerate(grid), a w tej pętli po znakach wiersza z enumerate(line).
Ukończ etap 1, aby odblokować ten etap.
Statek może przelecieć tylko przez kolumnę bez odłamków w żadnym wierszu. Po trafieniach wypisz wolne kolumny albo brak:
Odłamki w wierszu 0, kolumnie 2 Odłamki w wierszu 2, kolumnie 5 Odłamki w wierszu 3, kolumnie 0 Trafienia: 3 Wolne kolumny: 1, 3, 4, 6, 7
Odwróć pętle: zewnętrzna przechodzi po numerach kolumn, range(len(grid[0])), a wewnętrzna po wierszach, sprawdzając line[column]. Flaga mówi, czy kolumna była zablokowana.
Podpowiedzi
Pętla for z enumerate i range
# enumerate() - indeks + element
missions = ["Apollo 11", "Apollo 12", "Apollo 13"]
for number, mission in enumerate(missions, start=1):
print(f"{number}. {mission}")
# range() - generowanie sekwencji liczb
print("\nKwadraty liczb:")
for n in range(1, 6):
print(f"{n}^2 = {n**2}")
# range z krokiem
print("\nLata misji (co 5 lat):")
for year in range(2020, 2041, 5):
print(year)
Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].