как повернуть матричный объект в ruby ​​1.9? - PullRequest
3 голосов
/ 18 июля 2011

Я начинающий с Ruby. Поэтому я искал, как поменять матрицу

1, 2, 3,  4    8, 9, 10, 11
4, 5, 6,  7 => 4, 5, 6,  7
8, 9, 10, 11   1, 2, 3,  4

Я пробовал:

require 'matrix'
m = Matrix[ [1,2,3,4],[4,5,6,7], [8,9,10,11] ]
m_rev = Matrix.build(m.row_size, m.column_size){|row|
    m.row_size.downto(0){|i|
        row = m.row(i)
    }
}

Ответы [ 3 ]

5 голосов
/ 18 июля 2011

Попробуйте: Matrix[*m.to_a.reverse]:

m = Matrix[ [1,2,3,4], [5,6,7,8], [9,10,11,12] ]
 #=> Matrix[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
r = Matrix[*m.to_a.reverse]
 #=> Matrix[[9, 10, 11, 12], [5, 6, 7, 8], [1, 2, 3, 4]]

Не пропустите *.

2 голосов
/ 18 июля 2011

Вы можете сделать что-то вроде:

m_rev = Matrix.rows m.to_a.reverse
1 голос
/ 19 июля 2011

Вы были на правильном пути, за исключением того, что Matrix.build перебирает и строки, и столбцы:

m_rev = Matrix.build(m.row_size, m.column_size){|row, column|
  m[-row-1, column]
}

Проще и быстрее:

m_rev = Matrix.rows(m.to_a.reverse)
# or
m_rev = Matrix[*m.to_a.reverse]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...