Accesso agli elementi 2D
Fa parte della sezione Logica e flusso del percorso Ruby di Coddy. Lezione 11 di 56.
Per leggere o aggiornare una singola cella in un array 2D, concatenane due ricerche tramite indice: la prima seleziona la riga, la seconda la colonna.
matrix = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]
puts matrix[0][0] # 10 (arriba a la izquierda)
puts matrix[1][2] # 60 (fila 1, columna 2)
puts matrix[2][0] # 70 (abajo a la izquierda)Per aggiornare una cella, si usa la stessa sintassi sul lato sinistro:
matrix[0][1] = 99
puts matrix[0].inspect # [10, 99, 30]Due query utili sulla forma:
puts matrix.length # 3 (numero di righe)
puts matrix[0].length # 3 (colonne nella riga 0)Gli indici partono da 0 e arrivano fino a length - 1. Andare oltre la fine restituisce nil invece di generare un errore.
Sfida
PrincipianteL'array 2D matrix è dato. Leggi tre numeri interi (tre righe): r1, c1, poi v. Poi:
- Stampa il valore in corrispondenza di
matrix[r1][c1] - Imposta
matrix[r1][c1] = v - Stampa l'intero
matrixaggiornato usandoinspect
Per l'input 1 / 2 / 99, l'output è:
60
[[10, 20, 30], [40, 50, 99], [70, 80, 90]]Provalo tu
matrix = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]
r1 = gets.to_i
c1 = gets.to_i
v = gets.to_i
# TODO: stampa matrix[r1][c1], assegna v, poi stampa l'intera matrice
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Panoramica dei metodi delle stringheInterpolazione di stringheIterare sulle stringheDividere e unireRiepilogo - Tessitore di stringhe4Blocchi, Proc e Lambda
Che cos’è un Block?do..end vs parentesi graffeLa keyword yieldParametri del BlockProc e LambdaRiepilogo - Iteratore personalizzato7Hash in Ruby - Parte 2
Hash.new con valori predefinitiIterare sugli hashHash annidatiUnire e trasformareRipasso - Contatore di frequenza10Progetto - Registri degli studenti
Panoramica del progettoAggiungere uno studente2Intervalli
Che cos'è un intervallo?Metodi degli intervalliIntervalli in Case / WhenRiepilogo - Esercitarsi con gli intervalli5La potenza di Enumerable
Select e RejectConcatenare MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRiepilogo - Pipeline di dati3Array bidimensionali
Basi degli array 2DAccesso agli elementi 2DIterare sugli array 2DPattern comuni con array 2DRiepilogo - Operazioni sulle matrici6Progetto - Gestore della biblioteca
Panoramica del progettoAggiungere un libroEsercitati da solo: Compilatore Ruby online