Diagonales secundarias de una matriz
Definir la función
1 |
diagonalesSecundarias :: Matriz a -> [[a]] |
tal que (diagonalesSecundarias p) es la lista de las diagonales secundarias de p. Por ejemplo, para la matriz
1 2 3 |
1 2 3 4 5 6 7 8 9 10 11 12 |
la lista de sus diagonales secundarias es
1 |
[[1],[2,5],[3,6,9],[4,7,10],[8,11],[12]] |
En Haskell,
1 2 |
ghci> diagonalesSecundarias (listArray ((1,1),(3,4)) [1..12]) [[1],[2,5],[3,6,9],[4,7,10],[8,11],[12]] |
Soluciones
1 2 3 4 5 6 7 8 9 10 |
import Data.Array type Matriz a = Array (Int,Int) a diagonalesSecundarias :: Matriz a -> [[a]] diagonalesSecundarias p = [[p!ij1 | ij1 <- extension ij] | ij <- iniciales] where (_,(m,n)) = bounds p iniciales = [(1,j) | j <- [1..n]] ++ [(i,n) | i <- [2..m]] extension (i,j) = [(i+k,j-k) | k <- [0..min (j-1) (m-i)]] |
3 Comentarios