UTNianos

Versión completa: ayuda ejercicio parcial
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
buenas, me dan una mano con el siguiente ejercicio del parcial?

Barbaros:

dave = ("Dave", 100, ["tejer","escribirPoesia"], [ardilla, libroPedKing])

Punto 3 - Aventuras

Los bárbaros suelen ir de aventuras por el reino luchando contra las fuerzas del mal, pero ahora que tienen nuestra ayuda, quieren que se les diga si un grupo de bárbaros puede sobrevivir a cierta aventura. Una aventura se compone de uno o más eventos, por ejemplo:

invasionDeSuciosDuendes: Un bárbaro sobrevive si sabe “Escribir Poesía Atroz”
cremalleraDelTiempo: Un bárbaro sobrevive si no tiene pulgares. Los bárbaros llamados Faffy y Astro no tienen pulgares, los demás sí.
ritualDeFechorias: Un bárbaro puede sobrevivir si pasa una o más pruebas como las siguientes:
saqueo: El bárbaro debe tener la habilidad de robar y tener más de 80 de fuerza.
gritoDeGuerra: El bárbaro debe tener un poder de grito de guerra igual a la cantidad de letras de sus habilidades. El poder necesario para aprobar es 4 veces la cantidad de objetos del bárbaro.
caligrafia: El bárbaro tiene caligrafía perfecta (para el estándar barbárico de la época) si sus habilidades contienen más de 3 vocales y comienzan con mayúscula.

Definir la función sobrevivientes que tome una lista de bárbaros y una aventura, y diga cuáles bárbaros la sobreviven (es decir, pasan todas las pruebas)
Dale. Pero contanos en dónde te trabaste / qué te cuesta!
al ser sincero no se como encararlo, alguno resolvio este ejercicio?
La idea es definir la función sobrevivientes que recibe un conjunto de bárbaros y una aventura.
El enunciado aclara que una aventura se compone de un conjunto de eventos. Y al describir los eventos, los define como condiciones que debe cumplir el bárbaro para sobrevivir a dicho evento.
Entonces ya podemos ir pensando que una aventura es un conjunto de eventos o condiciones.


sobrevivientes barbaro aventura = ???


El tema es cómo definimos la función. Por como lo veo, tenemos 2 opciones:
  1. Los eventos son condiciones, es decir, funciones que retornan un booleano.
  2. Un evento es un string, y definimos, mediante pattern-matching, las condiciones.


Encaro la primer opción; tenemos que definir funciones a partir de la descripción de cada evento que nos da el enunciado.



habilidades (_, _, habilidadesDelBarbaro, _) = habilidadesDelBarbaro
--invasionDeSuciosDuendes barbaro = (elem "Escribir Poesía Atroz".habilidades) barbaro
invasionDeSuciosDuendes = elem "Escribir Poesía Atroz".habilidades



O bien, la segunda opción; una aventura sería un conjunto de strings.



puedeSuperar barbaro "invasionDeSuciosDuendes" = (elem "Escribir Poesía Atroz".habilidades) barbaro



Dependiendo la opción, cambiará nuestra definición de sobrevivientes.

Espero que te sirva como guía!

PD: me olvidé de la conclusión sobre las 2 opciones. La primera es mucho más poderosa que la segunda, ya que tomamos cada evento como una función, lo que nos permite componerlos y utilizarlos en funciones de orden superior. En cambio, la segunda termina por dar múltiples definiciones de una misma función, lo que nos da simplicidad en un primer momento (ya que no definimos muchas funciones) pero delegamos el control de superar muchos eventos distintos en una única función, lo que complica mucho a la hora de entender cuándo un bárbaro sobrevive o no un determinado evento.
URLs de referencia