Ir al contenido principal

Intercambio de la primera y última columna de una matriz

Las matrices se pueden representar mediante listas de listas. Por ejemplo, la matriz

8 9 7 6
4 7 6 5
3 2 1 8

se puede representar por la lista

[[8,9,7,6],[4,7,6,5],[3,2,1,8]]

Definir la función

intercambia :: [[a]] -> [[a]]

tal que (intercambia xss) es la matriz obtenida intercambiando la primera y la última columna de xss. Por ejemplo,

λ> intercambia [[8,9,7,6],[4,7,6,5],[3,2,1,8]]
[[6,9,7,8],[5,7,6,4],[8,2,1,3]]

Soluciones

intercambia :: [[a]] -> [[a]]
intercambia = map intercambiaL

-- (intercambiaL xs) es la lista obtenida intercambiando el primero y el
-- último elemento de xs. Por ejemplo,
--    intercambiaL [8,9,7,6]  ==  [6,9,7,8]
intercambiaL :: [a] -> [a]
intercambiaL xs =
  last xs : tail (init xs) ++ [head xs]