Я пытаюсь транспонировать [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
. Я получаю [[2, 5, 8], [2, 5, 8], [2, 5, 8]]
.Назначение значений для 2D-массива с использованием метода «каждый»
Я вижу, что происходит с линией p transposed_arr
, но не понимаю, почему это происходит. На каждой итерации она меняет каждую строку, а не только одну.
def my_transpose(arr)
# number of rows
m = arr.count
#number of columns
n = arr[0].count
transposed_arr = Array.new(n, Array.new(m))
# loop through the rows
arr.each_with_index do |row, index1|
# loop through the colons of one row
row.each_with_index do |num, index2|
# swap indexes to transpose the initial array
transposed_arr[index2][index1] = num
p transposed_arr
end
end
transposed_arr
end
Thx Кэри, он работает ... –
Теперь, когда ваш код работает, рассмотрите postin g в [Обзор кода] (http://codereview.stackexchange.com/), чтобы получить предложения по улучшению. Если вы еще не были там, я думаю, что вы будете впечатлены предоставленным там советом. Многие из вопросов, размещенных там от новичков, так что это нисколько не пугает. –