Em F#, os Boolean são representados pelo tipo bool: seus valores podem ser true ou false.
O F# oferece três operadores booleanos: not (NÃO), && (E) e || (OU).
Neste exercício, você vai implementar a lógica de missão de um novo jogo de RPG que um amigo está desenvolvendo. A personagem principal do jogo é Annalyn, uma garota corajosa que tem um cachorro de estimação feroz e leal. Infelizmente, o desastre acontece: seu melhor amigo foi sequestrado enquanto procurava frutas na floresta. Annalyn vai tentar encontrar e libertar seu melhor amigo, podendo levar o cachorro com ela nessa missão.
Depois de passar um tempo seguindo as pistas de seu melhor amigo, ela encontra o acampamento onde ele está preso. Acontece que há dois sequestradores: um cavaleiro poderoso e um arqueiro astuto.
Depois de encontrar os sequestradores, Annalyn pensa em quais das ações a seguir ela pode realizar:
Você tem quatro tarefas: implementar a lógica para determinar se as ações acima estão disponíveis com base no estado dos três personagens encontrados na floresta e em se o cachorro de Annalyn está presente ou não.
Implemente a função canFastAttack, que recebe um valor Boolean que indica se o cavaleiro está acordado. Essa função retorna true se dá para fazer um ataque rápido com base no estado do cavaleiro. Caso contrário, retorna false:
let knightIsAwake = true
canFastAttack(knightIsAwake)
// => false
Implemente a função canSpy, que recebe três valores Boolean, indicando se o cavaleiro, o arqueiro e o prisioneiro, respectivamente, estão acordados. A função retorna true se dá para espionar o grupo, com base no estado dos três personagens. Caso contrário, retorna false:
let knightIsAwake = false
let archerIsAwake = true
let prisonerIsAwake = false
canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake)
// => true
Implemente a função canSignalPrisoner, que recebe dois valores Boolean, indicando se o arqueiro e o prisioneiro, respectivamente, estão acordados. A função retorna true se dá para sinalizar ao prisioneiro, com base no estado dos dois personagens. Caso contrário, retorna false:
let archerIsAwake = false
let prisonerIsAwake = true
canSignalPrisoner(archerIsAwake, prisonerIsAwake)
// => true
Implemente a função canFreePrisoner, que recebe quatro valores Boolean. Os três primeiros parâmetros indicam se o cavaleiro, o arqueiro e o prisioneiro, respectivamente, estão acordados. O último parâmetro indica se o cachorro de Annalyn está presente. A função retorna true se dá para libertar o prisioneiro com base no estado dos três personagens e na presença do cachorro de Annalyn. Caso contrário, retorna false:
let knightIsAwake = false
let archerIsAwake = true
let prisonerIsAwake = false
let petDogIsPresent = false
canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent)
// => false
Crie sua conta no Exercism para aprender e dominar F# com 18 conceitos148 exercícios e mentoria humana de verdade, tudo de graça.