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) }) は重要です。これによって各行に対して新しい内部配列が作成されます。これがないと、すべての行が同じ配列を指してしまいます。
チャレンジ
簡単2つの整数(2行の入力)、rows と cols を読み込みます。そのサイズの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で出力する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。