Menu
Coddy logo textTech

Iterowanie po tablicach 2D

Część sekcji Logika i przepływ programu ścieżki Ruby w Coddy. Lekcja 12 z 56.

Aby odwiedzić każdą komórkę w tablicy 2D, zagnieżdżasz dwie iteracje. Pętla zewnętrzna przechodzi przez wiersze, a pętla wewnętrzna przez kolumny danego wiersza.

Najbardziej idiomatyczny wzorzec w Ruby używa dwukrotnie each:

grid = [
  [1, 2, 3],
  [4, 5, 6]
]

grid.each do |row|
  row.each do |cell|
    puts cell
  end
end
# 1, 2, 3, 4, 5, 6  (każda liczba w osobnym wierszu)

Jeśli potrzebujesz również indeksów wiersza i kolumny, na przykład do oznaczenia każdej komórki, użyj each_with_index na obu poziomach:

grid.each_with_index do |row, r|
  row.each_with_index do |cell, c|
    puts "(#{r},#{c}) = #{cell}"
  end
end

Ten styl jest krótszy i bezpieczniejszy niż ręczne śledzenie indeksów — nie ma ryzyka wyjścia poza koniec wiersza.

challenge icon

Wyzwanie

Łatwy

Podana jest tablica 2D grid (3 wiersze × 3 kolumny z liczbami całkowitymi).

Dla każdego wiersza znajdź każdą komórkę, której wartość jest ściśle większa od średniej tego wiersza. Wypisz każdą taką komórkę w osobnym wierszu w formacie:

(r,c) = value

Użyj zagnieżdżonych each_with_index. Oblicz średnią wewnątrz pętli zewnętrznej, aby próg każdego wiersza był niezależny.

Dla domyślnej tablicy komórki, których wartości przekraczają średnią wiersza, to:

(0,1) = 8
(1,2) = 9
(2,0) = 6
(2,1) = 7

Spróbuj swoich sił

grid = [
  [1, 8, 3],
  [4, 5, 9],
  [6, 7, 2]
]

# TODO: użyj zagnieżdżonego each_with_index, wypisz komórki > średnia wiersza
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Ruby online