Zugriff auf 2D-Elemente
Teil des Abschnitts Logik und Ablauf der Ruby-Journey von Coddy. Lektion 11 von 56.
Um eine einzelne Zelle in einem 2D-Array zu lesen oder zu aktualisieren, verknüpfst du zwei Indexzugriffe: Der erste wählt die Zeile aus, der zweite die Spalte.
matrix = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]
puts matrix[0][0] # 10 (oben links)
puts matrix[1][2] # 60 (Zeile 1, Spalte 2)
puts matrix[2][0] # 70 (unten links)Das Aktualisieren einer Zelle verwendet auf der linken Seite dieselbe Syntax:
matrix[0][1] = 99
puts matrix[0].inspect # [10, 99, 30]Zwei nützliche Abfragen zur Form:
puts matrix.length # 3 (Anzahl der Zeilen)
puts matrix[0].length # 3 (Spalten in Zeile 0)Indizes beginnen bei 0 und gehen bis length - 1. Wird über das Ende hinausgegangen, wird nil zurückgegeben, anstatt einen Fehler auszulösen.
Aufgabe
AnfängerDas 2D-Array matrix ist gegeben. Lies drei Ganzzahlen (drei Zeilen): r1, c1, dann v. Dann:
- Gib den Wert an
matrix[r1][c1]aus - Setze
matrix[r1][c1] = v - Gib das vollständig aktualisierte
matrixmitinspectaus
Für die Eingabe 1 / 2 / 99 lautet die Ausgabe:
60
[[10, 20, 30], [40, 50, 99], [70, 80, 90]]Probier es selbst
matrix = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]
r1 = gets.to_i
c1 = gets.to_i
v = gets.to_i
# TODO: matrix[r1][c1] ausgeben, v zuweisen, dann die ganze Matrix ausgeben
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik und Ablauf
1Strings im Detail
Überblick über String-MethodenString-InterpolationStrings durchlaufenSplitten und VerbindenRückblick – String Weaver4Blocks, Procs & Lambdas
Was ist ein Block?do..end vs. geschweifte KlammernDas Schlüsselwort yieldBlock-ParameterProcs und LambdasRückblick – Benutzerdefinierter Iterator2Bereiche
Was ist ein Bereich?BereichsmethodenBereiche in Case / WhenWiederholung – Übung zu Bereichen5Das Enumerable-Kraftpaket
Select und RejectMap verkettenReduce / Injectcount, all?, any?, none?group_by und partitionsort_by, min_by, max_byZusammenfassung – Datenpipeline8Fortgeschrittene Entscheidungsfindung
Case mit Klassen & Regexwhen mit mehreren WertenTernärer OperatorInline-if / unlessRückblick – Notenklassifizierer32D-Arrays
Grundlagen von 2D-ArraysZugriff auf 2D-ElementeDurchlaufen von 2D-ArraysGängige 2D-MusterRückblick – Matrixoperationen6Projekt – Bibliotheksverwaltung
ProjektübersichtBuch hinzufügenÜbe selbstständig: Online-Ruby-Compiler