2D-Array Grundlagen
Teil des Abschnitts Logik & Programmfluss der Ruby-Journey von Coddy — Lektion 10 von 56.
Ein 2D-Array ist ein Array, dessen Elemente selbst Arrays sind. Jedes innere Array repräsentiert eine Zeile in einem Raster.
cinema = [
[true, true], # Zeile 0
[false, true] # Zeile 1
]Dies stellt ein 2×2-Gitter dar, zwei Zeilen mit jeweils zwei Spalten.
Um ein 3×4-Gitter aus Ganzzahlen zu erstellen:
matrix = [
[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]
]Sie können ein Raster, das mit einem Standardwert gefüllt ist, erstellen, indem Sie Array.new zweimal verwenden, einmal für Zeilen und einmal für Spalten:
grid = Array.new(3) { Array.new(4, 0) }
# 3 Zeilen, 4 Spalten, alles NullenDie Blockform ({ Array.new(4, 0) }) ist wichtig, da sie für jede Zeile ein neues inneres Array erstellt. Ohne sie würde jede Zeile auf dasselbe Array verweisen.
Aufgabe
EinfachLies zwei Ganzzahlen ein (zwei Zeilen Eingabe): rows und cols. Erstelle ein 2D-Array dieser Größe, bei dem jede Zelle gleich row * cols + col + 1 ist (so zählt die erste Zeile ab 1 und das Gitter wird in Lesereihenfolge gefüllt).
Gib das Gitter mit inspect auf dem äußeren Array in einer Zeile aus.
Für die Eingabe 2 und dann 3 ist die Ausgabe:
[[1, 2, 3], [4, 5, 6]]Spickzettel
2D-Arrays sind Arrays von Arrays, wobei jedes innere Array eine Zeile ist:
matrix = [
[1, 2, 3],
[4, 5, 6]
]Erstellen Sie ein Gitter mit einem Standardwert unter Verwendung von Array.new mit einem Block (der Block stellt sicher, dass jede Zeile ein separates Array ist):
grid = Array.new(3) { Array.new(4, 0) }
# 3 Zeilen, 4 Spalten, alles NullenProbier es selbst
rows = gets.to_i
cols = gets.to_i
# TODO: Erstelle das Gitter und gib es mit inspect aus
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Programmfluss
1Strings im Detail
String-Methoden im ÜberblickString-InterpolationIterieren über StringsSplit und JoinRückblick – String Weaver4Blöcke, Procs & Lambdas
Was ist ein Block?do..end vs. geschweifte KlammernDas yield-SchlüsselwortBlock-ParameterProcs und LambdasZusammenfassung – Eigener Iterator7Hashes Teil 2
Hash.new mit StandardwertenIterieren über HashesVerschachtelte HashesZusammenführen und TransformierenRückblick – Häufigkeitszähler10Projekt - Studentenverwaltung
ProjektübersichtStudent hinzufügen5Enumerable-Kraftpaket
Select und RejectMap-VerkettungReduce / Injectcount, all?, any?, none?group_by und partitionsort_by, min_by, max_byZusammenfassung – Data Pipeline8Fortgeschrittene Entscheidungslogik
Case mit Klassen & RegexMulti-Value whenTernärer OperatorInline if / unlessRückblick – Noten-Klassifizierer32D-Arrays
2D-Array GrundlagenZugriff auf 2D-ElementeIterieren über 2D-ArraysGängige 2D-MusterZusammenfassung – Matrix-Operationen6Projekt - Bibliotheksverwaltung
ProjektübersichtBuch hinzufügen