嗨,我是一個Ruby新手,可以使用下面的代碼一些幫助。Ruby二維數組轉置 - 變量不按預期工作
這應該是轉置一個二維數組。首先,我知道使用my_array.transpose
將完成與整個方法相同的操作。這對我來說是一個學習練習,因爲我不知道爲什麼我的代碼正在做它的工作。
再次,這應該轉置一個2d數組。它實際上做的是用正確數量的嵌套數組(行)創建一個數組,但它們都是空的。
此外,我的方法似乎正在改變我不希望它做的my_array
的值。它看起來像我的變量出了問題,我測試了代碼,並且new_row
確實包含了正確的期望值,因爲它經過了它的循環 - 但不知何故,當我撥打new_row.clear
時,它也擦除了new_array
中的值。
編輯 - 澄清我的意思轉,考慮下面的代碼的陣列,該陣列換位應該是:
[
[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
轉換數組是什麼意思? –
初始數組中的現有行應對應於新數組中的列,反之亦然。 – lwalden