Menu
Coddy logo textTech

Gängige 2D-Muster

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

Einige Operationen mit 2D-Arrays treten so häufig auf, dass es sich lohnt, sie beim Namen zu kennen.

Jede Zelle summieren: Wandle das Raster in ein 1D-Array um und rufe sum auf:

grid = [[1, 2], [3, 4]]
puts grid.flatten.sum  # 10

Hauptdiagonale: die Zellen, bei denen der Zeilenindex dem Spaltenindex entspricht (matrix[i][i]):

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

(0...matrix.length).each do |i|
  puts matrix[i][i]
end
# 1, 5, 9

Transponieren: Ruby verfügt über diese Funktion. Zeilen werden zu Spalten und umgekehrt:

matrix.transpose
# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

Wenn du diese dem Namen nach kennst, ersparst du dir, dieselben verschachtelten Schleifen neu zu schreiben.

challenge icon

Aufgabe

Einfach

Die quadratische matrix ist gegeben (n × n). Gib drei Zeilen aus, die alle aus den Mustern in der Theorie abgeleitet sind:

  1. Anti-diagonal sum: <n>, die Summe der Zellen, für die r + c == matrix.length - 1 gilt
  2. Column sums: [...], die Summe jeder Spalte. Hinweis: Transponiere zuerst, bilde dann für jede Zeile die Summe und verwende anschließend inspect
  3. Symmetric: true oder false: Ist die Matrix gleich ihrer eigenen Transponierten?

Für die Standardmatrix lautet die Ausgabe:

Anti-diagonal sum: 15
Column sums: [12, 15, 18]
Symmetric: false

Probier es selbst

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

# TODO: anti-diagonal sum, column sums via transpose, symmetric check
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

Übe selbstständig: Online-Ruby-Compiler