Menu
Coddy logo textTech

2次元配列の基礎

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

2次元配列とは、その要素自体が配列である配列のことです。各内部配列は、グリッド内の行を表します。

cinema = [
  [true,  true],   # 行 0
  [false, true]    # 行 1
]

これは、2行2列の2×2グリッドを表しています。

整数の3×4グリッドを作成するには:

matrix = [
  [ 1,  2,  3,  4],
  [ 5,  6,  7,  8],
  [ 9, 10, 11, 12]
]

Array.newを2回(1回は行のため、もう1回は列のため)使用することで、デフォルト値で埋められたグリッドを作成できます:

grid = Array.new(3) { Array.new(4, 0) }
# 3行、4列、すべてゼロ

ブロック形式 ({ Array.new(4, 0) }) は重要です。これによって各行に対して新しい内部配列が作成されます。これがないと、すべての行が同じ配列を指してしまいます。

challenge icon

チャレンジ

簡単

2つの整数(2行の入力)、rowscols を読み込みます。そのサイズの2次元配列を作成し、各セルの値を row * cols + col + 1 とします(つまり、最初の行は1から始まり、グリッドは読み取り順に埋められます)。

外側の配列に対して inspect を使用して、グリッドを1行で出力してください。

入力が 2 次に 3 の場合、出力は以下の通りです:

[[1, 2, 3], [4, 5, 6]]

チートシート

2次元配列は配列の配列であり、各内部配列が行となります:

matrix = [
  [1, 2, 3],
  [4, 5, 6]
]

Array.newをブロック付きで使用して、デフォルト値を持つグリッドを構築します(ブロックを使用することで、各行が個別の配列になることが保証されます):

grid = Array.new(3) { Array.new(4, 0) }
# 3行、4列、すべてゼロ

自分で試してみよう

rows = gets.to_i
cols = gets.to_i

# TODO: グリッドを構築し、inspectで出力する
quiz icon腕試し

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

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