Menu
Coddy logo textTech

Pattern comuni con array 2D

Fa parte della sezione Logica e flusso del percorso Ruby di Coddy. Lezione 13 di 56.

Alcune operazioni sugli array 2D ricorrono così spesso che vale la pena riconoscerle per nome.

Somma ogni cella: appiattisci la griglia in un array 1D e chiama sum:

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

Diagonale principale: le celle in cui l’indice di riga è uguale all’indice di colonna (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

Trasporre: Ruby include già questa funzionalità. Le righe diventano colonne e viceversa:

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

Conoscerli per nome ti evita di riscrivere gli stessi cicli annidati.

challenge icon

Sfida

Facile

La matrice quadrata matrix è data (n × n). Stampa tre righe, tutte derivate dagli schemi illustrati nella teoria:

  1. Anti-diagonal sum: <n>, la somma delle celle in cui r + c == matrix.length - 1
  2. Column sums: [...], la somma di ogni colonna. Suggerimento: prima trasponi, poi associa ogni riga alla sua somma, poi inspect
  3. Symmetric: true oppure false: la matrice è uguale alla sua trasposta?

Per la matrice predefinita, l'output è:

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

Provalo tu

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

# TODO: somma dell'antidiagonale, somme delle colonne tramite trasposizione, verifica della simmetria
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Ruby online