Los Boolean en F# se representan con el tipo bool, cuyos valores pueden ser true o false.
F# admite tres operadores booleanos: not (NOT), && (AND) y || (OR).
En este ejercicio implementarás la lógica de una misión para un nuevo juego de rol que está desarrollando un amigo. La protagonista del juego es Annalyn, una chica valiente con un perro feroz y leal. Por desgracia, ocurre un 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 donde está prisionero. Resulta que hay dos secuestradores: un caballero poderoso y un arquero astuto.
Habiendo encontrado a los secuestradores, Annalyn considera cuáles de las siguientes acciones puede realizar:
Tienes cuatro 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:
let 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:
let knightIsAwake = false
let archerIsAwake = true
let 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 pueden hacer señales al prisionero, según el estado de los dos personajes. De lo contrario, devuelve false:
let archerIsAwake = false
let 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:
let knightIsAwake = false
let archerIsAwake = true
let prisonerIsAwake = false
let petDogIsPresent = false
canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent)
// => false
Regístrate en Exercism para aprender y dominar F# con 18 conceptos148 ejercicios y mentoría humana real, todo gratis.