Matriz girada 180 grados
Definir la función
| 
					 1  | 
						   matrizGirada180 :: Matrix a -> Matrix a  | 
					
tal que (matrizGirada180 p) es la matriz obtenida girando 180 grados la matriz p. Por ejemplo,
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21  | 
						   λ> 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
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26  | 
						import Data.Matrix ( Matrix                    , (!)                    , fromList                    , fromLists                    , matrix                    , ncols                    , nrows                    , toLists                    ) -- 1ª solución 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) -- 2ª solución matrizGirada180b :: Matrix a -> Matrix a matrizGirada180b p =   fromLists (reverse (map reverse (toLists p))) -- 3ª solución matrizGirada180c :: Matrix a -> Matrix a matrizGirada180c =   fromLists . reverse . map reverse . toLists  | 
					
Pensamiento
Bueno es recordar
las palabras viejas
que han de volver a sonar.Antonio Machado