En la siguiente figura, al rotar girando 90 grados en el sentido del reloj la matriz de la izquierda, obtenemos la de la derecha
|
1 2 3 7 4 1 4 5 6 8 5 2 7 8 9 9 6 3 |
Definir la función
|
rota :: Matrix Int -> Matrix Int |
tal que (rota p) es la matriz obtenida girando en el sentido del reloj la matriz cuadrada p. Por ejemplo,
|
λ> rota (fromList 3 3 [1..9]) ( 7 4 1 ) ( 8 5 2 ) ( 9 6 3 ) λ> rota (fromList 3 3 [7,4,1,8,5,2,9,6,3]) ( 9 8 7 ) ( 6 5 4 ) ( 3 2 1 ) |
Soluciones
|
import Data.Matrix rota :: Matrix Int -> Matrix Int rota p = matrix n m (\(i,j) -> p ! (n+1-j,i)) where m = nrows p n = ncols p |
Se puede imprimir o compartir con