二维数组基础
本课属于 Coddy Ruby 学习旅程的“逻辑与流程”单元。第 10 课,共 56 课。
二维数组是一个数组,其中的元素本身也是数组。每个内部数组表示网格中的一行。
cinema = [
[true, true], # 第 0 行
[false, true] # 第 1 行
]这表示一个 2×2 网格,有两行,每行两列。
要创建一个 3×4 的整数网格:
matrix = [
[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]
]你可以用两次 Array.new 创建一个填有默认值的网格,一次用于行,一次用于列:
grid = Array.new(3) { Array.new(4, 0) }
# 3 行、4 列,所有元素都是 0块形式({ Array.new(4, 0) })很重要,它会为每一行创建一个新的内部数组。没有它,每一行都会指向同一个数组。
挑战
简单读取两个整数(两行输入):rows 和 cols。创建一个指定大小的二维数组,其中每个单元格的值都等于 row * cols + col + 1(因此第一行从 1 开始计数,网格按阅读顺序填充)。
使用外层数组的 inspect 输出网格,占一行。
输入 2,然后输入 3,输出为:
[[1, 2, 3], [4, 5, 6]]亲手试试
rows = gets.to_i
cols = gets.to_i
# TODO: 构建网格,并用 inspect 打印出来
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Ruby 在线编译器