Я пытаюсь решить задачу: транспонировать вложенный массив без использования заранее определенного метода transpose
или использования какого-либо "лишнего пробела", например временных переменных.
Ввод: [[1,2,3], [7,6,5], [8,2,1]]
Выход: [[1,7,8],[2,6,2],[3,5,1]]
Вот алгоритм:
Нам просто нужно поменять местами индексы.
например:
(0,0) -> (0,0)
(0,1) -> (1,0) and (1,0) -> (0,1)
(0,2) -> (2,0) and (2,0) -> (0,2)
и это продолжается.
Ниже мой код
arr = [[1,2,3], [7,6,5], [8,2,1]]
arr.each_with_index do |inner, i|
inner.each_with_index do |e, j|
arr[i][j], arr[j][i] = arr[j][i], arr[i][j]
end
end
arr
#=> [[1, 2, 3], [7, 6, 5], [8, 2, 1]]