Menu
Coddy logo textTech

Gängige 2D-Muster

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

Einige 2D-Array-Operationen treten so häufig auf, dass es sich lohnt, sie namentlich zu kennen.

Jede Zelle summieren: Wandeln Sie das Gitter in ein 1D-Array um und rufen Sie 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 hat dies bereits integriert. Zeilen werden zu Spalten und umgekehrt:

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

Diese beim Namen zu kennen, erspart Ihnen das erneute Schreiben derselben verschachtelten Schleifen.

challenge icon

Aufgabe

Einfach

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

  1. Anti-diagonal sum: <n>, die Summe der Zellen, bei denen r + c == matrix.length - 1 gilt
  2. Column sums: [...], die Summe jeder Spalte. Hinweis: Zuerst transponieren, dann jede Zeile auf ihre Summe mappen, dann inspect
  3. Symmetric: true oder false: Ist die Matrix gleich ihrer eigenen Transponierten?

Für die Standard-Matrix 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: Summe der Gegendiagonalen, Spaltensummen via Transponierung, Symmetrie-Prüfung
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