UTNianos

Versión completa: Funcional, dudas de como resolver un punto
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Bueno, es de un tp de funcional, y tengo que resolver un punto que me esta quemando la cabeza :/


Las carreras de chocobos son un entretenimiento cada día más popular, y por lo tanto ya es hora de armar un programa que nos ayude a analizarlas como es debido. Elegimos hacerlo en haskell, básicamente por inercia (y... ya que lo venimos usando hace 2 meses sigamos con eso).

Las pistas por las que nuestros emplumados amigos deben correr van a estar representadas por listas de tramos, cada tramo a su vez sera representado por una tupla (distancia, correcionDeVelocidad).

bosqueTenebroso = [ (100, f1) , (50, f2) , (120, f2) , (200, f1) , (80, f3) ]
pantanoDelDestino = [ (40, f2) , (90, (\(CChocobo _ (f,p,v))-> f + p + v)) , (120, fuerza) , (20, fuerza) ]

f1 chocobo = velocidad chocobo * 2
f2 chocobo = velocidad chocobo + fuerza chocobo
f3 chocobo = velocidad chocobo `div` peso chocobo

Tenemos los chocobos (esenciales para una carrera de chocobos): el negro, el amarillo, el blanco y el rojo. Cada uno tiene distintas características, modeladas por medio de un data:

data Chocobo = CChocobo String (Integer,Integer,Integer) deriving(Show)

amarillo = CChocobo "amarillo" (5,3,3)
negro = CChocobo "negro" (4,4,4)
blanco = CChocobo "blanco" (2,3,6)
rojo = CChocobo "rojo" (3,3,4)

fuerza (CChocobo _ (f,_,_)) = f
peso (CChocobo _ (_,p,_)) = p
velocidad (CChocobo _ (_,_,v)) = v


2. a. Saber el tiempo que tarda un chocobo en recorrer un tramo. El mismo está dado por la distancia del tramo dividido por la velocidad corregida para el chocobo.

> tiempo amarillo (head bosqueTenebroso)
16

bien, mi problema es a la hora de relacionar lo que serian las funciones f1, f2 y f3 con la correccion de velocidad, se me ocurre algo asi:

distancia ( a, _) = a
correccionDeVelocidad ( _,b) =b

pero aca me quedo, ayuda pliss :/
hola , primero que nada lo de data no lo vi en la cursada pero me parece que no cambia en nada el ejercicio.

1)Lo que tenemos que ver primero , pensar que va a recbir esta funcion? , va a recibir un chocobo y un tramo ( que representa una tupla).

Ahora,
tiempo chocobo (distancia,correcionVelocidad ) = distancia `div` (correccionVelocidad chocobo)
correcionVelocidad es una funcion que le aplicas al chocobo para obtener su velocidad
en este caso seria equivalente a f1 chocobo = velocidad chocobo * 2
velocidad (CChocobo _ (_,_,v)) = v ya esta definida asi que te podes abstraer de todo eso y lo mismo es para todas las funciones definidas , espero no a verme equivocado
creo que es solo eso , espero te sirva.

saludos
Uh que genio, mil gracias, yo a la funcion le enviaba un chocobo y un tramo, (no en forma de tupla), no lo iba a resolver nunca jaja
URLs de referencia