Menu
Coddy logo textTech

2次元要素へのアクセス

CoddyのRubyジャーニー「ロジックとフロー」セクションの一部 — レッスン 11/56。

2次元配列の単一のセルを読み取ったり更新したりするには、2つのインデックス検索を連結します。最初が行を選択し、2番目が列を選択します。

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を返します。

challenge icon

チャレンジ

初心者

2次元配列 matrix が与えられます。3つの整数(3行) r1c1、そして v を読み込みます。その後:

  1. matrix[r1][c1] の値を出力します
  2. matrix[r1][c1] = v を代入します
  3. inspect を使用して、更新された matrix 全体を出力します

入力が 1 / 2 / 99 の場合、出力は以下の通りです:

60
[[10, 20, 30], [40, 50, 99], [70, 80, 90]]

チートシート

連結されたインデックス [row][col] を使用して、2次元配列のセルにアクセスし、更新します。

matrix = [
  [10, 20, 30],
  [40, 50, 60]
]

puts matrix[1][2]    # 60
matrix[1][2] = 99    # セルを更新
puts matrix.inspect  # [[10, 20, 30], [40, 50, 99]]

形状のクエリ:

matrix.length      # 行数
matrix[0].length   # 行0の列数

インデックスは 0 から始まります。範囲外にアクセスすると nil が返されます。

自分で試してみよう

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 を代入してから、行列全体を出力する
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン