Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: maritere22 en 22 Diciembre 2013, 10:57 am



Título: Duda con Haskell
Publicado por: maritere22 en 22 Diciembre 2013, 10:57 am
Hola!
Estoy atascada en la realización de un ejercicio de Haskell.
Se trata de una operación que obtiene una lista con todos los elementos que NO son adyacentes a un nodo dado.
Luego hay que hacer otra función que añada un arco entre dicho nodo y cada uno de sus no adyacentes.

Esto es lo que yo he intentado hacer para la lista de no adyacentes, no sé si estará bien, ¿me lo podéis revisar?:


Código:
data Grafo a = GVacio | Nodo a (Grafo a) | Arco a a (Grafo a) deriving (Show, Eq)

adyacentes :: (Eq a) => a -> a -> Grafo a -> Bool
adyacentes x y (Arco u v g) = x==u && y==v || x==v && y==u || adyacentes x y g
adyacentes _ _ _ = False

noadylista :: (Eq a) => Grafo a -> a -> [a]
noadylista GVacio _ = []
noadylista (Arco x y g) a = if ((adyacentes a x g))
                                       then (noadylista (Nodo y g) a)
                                      else x:(noadylista (Nodo y g) a)

La parte de poner el arco sí que no sé como hacerla...
¿Alguien me puede dar la idea?
Muchas gracias de antemano


Título: Re: Duda con Haskell
Publicado por: lnvisible en 22 Diciembre 2013, 19:58 pm
¿Has definido tú esa estructura de datos tan rara o es parte del enunciado del ejercicio?


Título: Re: Duda con Haskell
Publicado por: maritere22 en 22 Diciembre 2013, 23:58 pm
Venía así definida.
Muchas gracias ya me han ayudado  ;D