September 30th, 2021
0 | 1 | 2 |
3 | 4 | 5 |
6 | 7 | 8 |
行をrow、列をcolumn として表現してみます。
9つの要素持つ配列を3ごとの要素に区切って配列を作ります。
各配列を一つの配列に保持させます。
array = [0, 1, 2, 3, 4, 5, 6, 7, 8]
# その1
rows = []
array.each_slice(3) {|row| rows << row}
p rows
# [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
# その2
rows = array.each_slice(3).select {|row| row}
p rows
# [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
# 行のデータ
rows = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
# 列のデータ
columns = []
rows.size.times {columns << []}
rows.each do |arr|
arr.each_with_index {|e, i| columns[i] << e}
end
p columns
# [[0, 3, 6], [1, 4, 7], [2, 5, 8]]
# 行のデータ
rows = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
# 列のデータ
columns = rows.transpose
p columns
# [[0, 3, 6], [1, 4, 7], [2, 5, 8]]