El tipo Bool es uno de los bloques de construcción del lenguaje.
Su objetivo es describir si algo es verdadero o falso, con los respectivos valores True y False.
Los valores Boolean se pueden combinar con los operadores && («Y») y || («O»), y se pueden negar con la función not.
Los valores Boolean también son muy útiles para crear ramas en tu código que solo se ejecuten si se cumplen ciertas condiciones.
En Elm, esto se hace con una expresión if-then-else, que se usa de la siguiente manera.
if someCondition || (someOtherCondition && anotherCondition) then
doSomething
else
doSomethingElse
En este ejercicio, implementarás la lógica de la misión de un nuevo juego de rol que un amigo está desarrollando. La protagonista del juego es Annalyn, una chica valiente que tiene como mascota a un perro feroz y leal. Por desgracia, llega el desastre: su mejor amigo fue secuestrado mientras buscaba bayas en el bosque. Annalyn intentará encontrar y liberar a su mejor amigo, y puede llevar a su perro con ella en esta misión.
Después de pasar un tiempo siguiendo el rastro de su mejor amigo, encuentra el campamento en el que está prisionero. Resulta que hay dos secuestradores: un caballero poderoso y un arquero astuto.
Tras encontrar a los secuestradores, Annalyn considera cuáles de las siguientes acciones puede realizar:
Tienes cinco tareas: implementar la lógica para determinar si las acciones anteriores están disponibles según el estado de los tres personajes que se encuentran en el bosque y según si el perro de Annalyn está presente o no.
Implementa la función canFastAttack, que recibe un valor Boolean que indica si el caballero está despierto. Esta función devuelve True si se puede hacer un ataque rápido según el estado del caballero. De lo contrario, devuelve False:
knightIsAwake = True
canFastAttack knightIsAwake
--> False
Implementa la función canSpy, que recibe tres valores Boolean que indican si el caballero, el arquero y el prisionero, respectivamente, están despiertos. La función devuelve True si se puede espiar al grupo, según el estado de los tres personajes. De lo contrario, devuelve False:
knightIsAwake = False
archerIsAwake = True
prisonerIsAwake = False
canSpy knightIsAwake archerIsAwake prisonerIsAwake
--> True
Implementa la función canSignalPrisoner, que recibe dos valores Boolean que indican si el arquero y el prisionero, respectivamente, están despiertos. La función devuelve True si se le puede dar la señal al prisionero, según el estado de los dos personajes. De lo contrario, devuelve False:
archerIsAwake = False
prisonerIsAwake = True
canSignalPrisoner archerIsAwake prisonerIsAwake
--> True
Implementa la función canFreePrisoner, que recibe cuatro valores Boolean. Los primeros tres parámetros indican si el caballero, el arquero y el prisionero, respectivamente, están despiertos. El último parámetro indica si el perro de Annalyn está presente. La función devuelve True si se puede liberar al prisionero según el estado de los tres personajes y la presencia del perro de Annalyn. De lo contrario, devuelve False:
knightIsAwake = False
archerIsAwake = True
prisonerIsAwake = False
petDogIsPresent = False
canFreePrisoner knightIsAwake archerIsAwake prisonerIsAwake petDogIsPresent
--> False
Implementa la función stealthAttackDamage, que recibe un valor Boolean que indica si Annalyn fue detectada. Esta función devuelve 7 si fue detectada y 12 en caso contrario.
annalynIsDetected = True
stealthAttackDamage annalynIsDetected
--> 7
Regístrate en Exercism para aprender y dominar Elm con 28 conceptos110 ejercicios y mentoría humana real, todo gratis.