常见二维数组模式
本课属于 Coddy Ruby 学习旅程的“逻辑与流程”单元。第 13 课,共 56 课。
有些二维数组操作经常出现,值得记住它们的名称。
求出每个单元格的总和:将网格展平成一维数组,然后调用 sum:
grid = [[1, 2], [3, 4]]
puts grid.flatten.sum # 10主对角线:行索引等于列索引的单元格(matrix[i][i]):
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
(0...matrix.length).each do |i|
puts matrix[i][i]
end
# 1, 5, 9转置:Ruby 内置了这个功能。行变成列,列也变成行:
matrix.transpose
# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]记住这些名称,可以省去重复编写相同的嵌套循环。
挑战
简单给定一个方阵 matrix(n × n)。打印 3 行内容,全部根据理论中的模式得出:
Anti-diagonal sum: <n>,满足r + c == matrix.length - 1的单元格之和Column sums: [...],每一列的和。提示:先转置,然后将每一行映射为它的和,最后使用inspectSymmetric: true或false:矩阵是否等于它自身的转置?
默认矩阵的输出为:
Anti-diagonal sum: 15
Column sums: [12, 15, 18]
Symmetric: false亲手试试
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# TODO: 计算副对角线之和,通过转置计算各列之和,检查是否对称
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Ruby 在线编译器