Ir al contenido principal

Matriz girada 180 grados

Definir la función

matrizGirada180 :: Matrix a -> Matrix a

tal que (matrizGirada180 p) es la matriz obtenida girando 180 grados la matriz p. Por ejemplo,

λ> fromList 4 3 [1..]
(  1  2  3 )
(  4  5  6 )
(  7  8  9 )
( 10 11 12 )

λ> matrizGirada180 (fromList 4 3 [1..])
( 12 11 10 )
(  9  8  7 )
(  6  5  4 )
(  3  2  1 )

λ> fromList 3 4 [1..]
(  1  2  3  4 )
(  5  6  7  8 )
(  9 10 11 12 )

λ> matrizGirada180 (fromList 3 4 [1..])
( 12 11 10  9 )
(  8  7  6  5 )
(  4  3  2  1 )

Soluciones

import Data.Matrix (Matrix, (!), matrix, nrows, ncols)

matrizGirada180 :: Matrix a -> Matrix a
matrizGirada180 p = matrix m n f
  where m       = nrows p
        n       = ncols p
        f (i,j) = p!(m-i+1,n-j+1)