2次元要素へのアクセス
CoddyのRubyジャーニー「ロジックとフロー」セクションの一部。レッスン 11/56。
2次元配列内の単一の cell を読み取ったり更新したりするには、2つのインデックス検索を連結します。1つ目で row を選び、2つ目で column を選びます。
matrix = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]
puts matrix[0][0] # 10 (左上)
puts matrix[1][2] # 60 (行 1、列 2)
puts matrix[2][0] # 70 (左下)セルの更新には、左辺でも同じ構文を使用します。
matrix[0][1] = 99
puts matrix[0].inspect # [10, 99, 30]便利な形状クエリが 2 つあります:
puts matrix.length # 3(行の数)
puts matrix[0].length # 3(行0の列数)インデックスは 0 から始まり、length - 1 まで続きます。末尾を越えると、エラーが発生する代わりに nil が返されます。
チャレンジ
初心者2D 配列 matrix が与えられます。3 つの整数(3 行)を読み込みます:r1、c1、次に v。次に:
matrix[r1][c1]の値を出力するmatrix[r1][c1] = vを設定するinspectを使って更新後のmatrix全体を出力する
入力が 1 / 2 / 99 の場合、出力は次のとおりです:
60
[[10, 20, 30], [40, 50, 99], [70, 80, 90]]自分で試してみよう
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] を出力し、v を代入してから、行列全体を出力する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Rubyオンラインコンパイラ