Menu
Coddy logo textTech

Iterieren über 2D-Arrays

Teil des Abschnitts Logik & Programmfluss der Ruby-Journey von Coddy — Lektion 12 von 56.

Um jede Zelle in einem 2D-Array zu besuchen, schachteln Sie zwei Iterationen. Die äußere Schleife durchläuft die Zeilen; die innere Schleife durchläuft die Spalten dieser Zeile.

Das idiomatischste Ruby-Muster verwendet each zweimal:

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  (jeweils in einer eigenen Zeile)

Wenn Sie auch die Zeilen- und Spaltenindizes benötigen, zum Beispiel um jede Zelle zu beschriften, verwenden Sie each_with_index auf beiden Ebenen:

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

Dieser Stil ist kürzer und sicherer, als Indizes manuell zu verfolgen; es besteht kein Risiko, über das Ende einer Zeile hinauszugehen.

challenge icon

Aufgabe

Einfach

Das 2D-Array grid ist gegeben (3 Zeilen × 3 Spalten von Ganzzahlen).

Finde für jede Zeile jede Zelle, deren Wert strikt größer als der Durchschnitt dieser Zeile ist. Gib jede dieser Zellen in einer eigenen Zeile im folgenden Format aus:

(r,c) = value

Verwende verschachtelte each_with_index. Berechne den Durchschnitt innerhalb der äußeren Schleife, damit der Schwellenwert jeder Zeile unabhängig ist.

Für das Standard-Grid sind die Zellen, die den Durchschnitt ihrer Zeile übertreffen:

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

Spickzettel

Um über jede Zelle in einem 2D-Array zu iterieren, verschachteln Sie zwei each-Aufrufe:

grid.each do |row|
  row.each do |cell|
    puts cell
  end
end

Um auch auf Zeilen- und Spaltenindizes zuzugreifen, verwenden Sie each_with_index auf beiden Ebenen:

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

Probier es selbst

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

# TODO: verschachteltes each_with_index, Zellen > als der Durchschnitt der Zeile ausgeben
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Programmfluss