Representaciones de matrices
Enunciado
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
-- Las matrices se pueden representar de distintas formas. Por ejemplo, -- la matriz -- |7 5 6| -- |1 9 4| -- se puede representar como la terna -- ([7,5,6,1,9,4],2,3) -- (donde la primera componente es la lista de los elementos de la -- matriz, la segunda es su número de filas y la tercera es su número de -- columnas) y también se puede representar como una lista de listas -- [[[7,5,6],[1,9,4]] -- (donde cada elemento es una de las filas de la matriz). -- -- Definir las funciones -- ternaAlistas :: ([a],Int,Int) -> [[a]] -- listasAterna :: [[a]] -> ([a],Int,Int) -- tales que ternaAlistas pase de la primera representación a la -- segunda y listasAterna pase de la segunda a la primera. Por ejemplo, -- ternaAlistas ([7,5,6,1,9,4],2,3) == [[7,5,6],[1,9,4]] -- listasAterna [[7,5,6],[1,9,4]] == ([7,5,6,1,9,4],2,3) -- ternaAlistas ([7,5,6,1,9,4],3,2) == [[7,5],[6,1],[9,4]] -- listasAterna [[7,5],[6,1],[9,4]] == ([7,5,6,1,9,4],3,2) |
Soluciones
1 2 3 4 5 6 7 |
ternaAlistas :: ([a],Int,Int) -> [[a]] ternaAlistas (xs,n,m) = aux xs where aux [] = [] aux xs = take m xs : aux (drop m xs) listasAterna :: [[a]] -> ([a],Int,Int) listasAterna xss = (concat xss, length xss, length (head xss)) |
2 Comentarios