# transpose является стандартным методом класса Array Ruby, таким образом:
% irb
irb(main):001:0> m = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 0, 1, 2], [3, 4, 5, 6]]
=> [[1, 2, 3, 4], [5, 6, 7, 8], [9, 0, 1, 2], [3, 4, 5, 6]]
irb(main):002:0> m.reverse.transpose
=> [[3, 9, 5, 1], [4, 0, 6, 2], [5, 1, 7, 3], [6, 2, 8, 4]]
Реализация - это функция транспонирования n ^ 2, написанная на C. Вы можете увидеть это здесь:
http://www.ruby -doc.org / ядро-1.9.3 / Array.html # метод-я-транспонированная
выбрав «click to to источник» рядом с «transpose».
Я помню лучше, чем O (n ^ 2) решений, но только для специально построенных матриц (таких как разреженные матрицы)