Ejercicio 16, practico 2

Ejercicio 16, practico 2

de Daniel Padron Simon -
Número de respuestas: 1

Buenas, ¿cómo están?

Estuve trabajando en el práctico 2, pero me genera algunas dudas la forma en la que se hacen algunas preguntas. Por ejemplo, en la parte a del ejercicio 16 se dice usando el comando `drop`, ¿con qué lo usamos en algún punto sería válido no? 

¿En este tipo de ejercicio el enfoque está en usar principalmente ese comando o se puede utilizar otras instrucciones que sean parte vital de la solución? 

Aprovechando este hilo y la duda, pregunto, la siguiente forma de resolución: ¿Sería correcta? 

type Matriz a = [[a ]]

columna :: Int -> Matriz a -> [a]

columna indice matriz = map (\fila -> head (drop (indice - 1 ) fila)) matriz

trasponer :: Matriz a -> Matriz a

trasponer matriz = map (\indexCol -> columna indexCol matriz) [1..length(head matriz)]


Saludos y gracias, 

Daniel

En respuesta a Daniel Padron Simon

Re: Ejercicio 16, practico 2

de Alberto Pardo -
Hola Daniel,

Respecto a tu primera pregunta, es como decís. Lo que pedimos es que como parte de la definición de columna se use drop. En ese sentido, tu solución de columna está perfecta. De paso comento que se puede escribir también de esta forma:

columna indice matriz = map (head . drop (indice-1)) matriz

o incluso de esta otra:

columna indice = map (head . drop (indice-1))

aplicando lo que se conoce como eta-equivalencia que dice que \x -> e x = e siempre que x no ocurra en x.

La definición de transponer también es corercta.

Saludos,
Alberto.