【发布时间】:2014-03-28 12:44:51
【问题描述】:
您好,我是 Ruby 新手,可以使用下面的代码获得一些帮助。
这应该转置一个二维数组。首先,我知道使用my_array.transpose 将完成与整个方法相同的事情。这对我来说是一个学习练习,因为我不知道为什么我的代码正在做它正在做的事情,所以它正在发挥作用。
同样,这应该转置一个二维数组。它实际上在做的是创建一个具有正确数量的嵌套数组(行)的数组,但它们都是空的。
此外,我的方法似乎正在更改 my_array 的值,我不希望它这样做。看起来我的变量出了点问题,我已经测试了代码,new_row 确实包含正确的预期值,因为它通过它的循环 - 但不知何故,当我调用 new_row.clear 它也会擦除 @987654325 中的值@。
编辑 - 澄清我所说的转置的意思,给定下面代码中的数组,转置的数组应该是:
[
[0,4,8]
[1,5,9]
[2,6,10]
[3,7,11]
]
def my_transpose(inital_array)
new_row = []
new_array = []
new_row_start = 0
indexer = 0
row_count = inital_array.count
inital_array.flatten!
col_count = inital_array.count / row_count
col_count.times do
row_count.times do
new_row<<inital_array[indexer]
indexer += col_count
end
new_array<<new_row
new_row_start += 1
indexer = new_row_start
new_row.clear
end
return new_array
end
my_array = [
[0,1,2,3],
[4,5,6,7],
[8,9,10,11]
]
new_array = my_transpose(my_array)
print "old array:"
print my_array.inspect
puts
print "new array:"
puts new_array.inspect
【问题讨论】:
-
转置数组是什么意思?
-
初始数组中的现有行应该对应于新数组中的列,反之亦然。
标签: ruby arrays scope transpose