In F#, i booleani sono rappresentati dal tipo bool, i cui valori possono essere true o false.
F# supporta tre operatori booleani: not (NOT), && (AND) e || (OR).
In questo esercizio implementerai la logica delle missioni per un nuovo gioco di ruolo che sta sviluppando un amico. La protagonista del gioco è Annalyn, una ragazza coraggiosa con un cane feroce e fedele. Purtroppo arriva la catastrofe: la sua migliore amica è stata rapita mentre cercava bacche nel bosco. Annalyn proverà a trovare e liberare la sua migliore amica e, se vuole, potrà portare con sé il cane in questa impresa.
Dopo aver seguito per un po' le tracce della sua migliore amica, trova l'accampamento in cui è tenuta prigioniera. Scopre che i rapitori sono due: un cavaliere possente ed un arciere astuto.
Ora che ha trovato i rapitori, Annalyn valuta quale delle seguenti azioni può intraprendere:
Hai quattro compiti: implementare la logica che determina se le azioni precedenti sono disponibili, in base allo stato dei tre personaggi che si trovano nel bosco e alla presenza o meno del cane di Annalyn.
Implementa la funzione canFastAttack, che riceve un valore booleano che indica se il cavaliere è sveglio. La funzione restituisce true se si può sferrare un attacco rapido in base allo stato del cavaliere. Altrimenti restituisce false:
let knightIsAwake = true
canFastAttack(knightIsAwake)
// => false
Implementa la funzione canSpy, che riceve tre valori booleani che indicano rispettivamente se il cavaliere, l'arciere ed il prigioniero sono svegli. La funzione restituisce true se si può spiare il gruppo, in base allo stato dei tre personaggi. Altrimenti restituisce false:
let knightIsAwake = false
let archerIsAwake = true
let prisonerIsAwake = false
canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake)
// => true
Implementa la funzione canSignalPrisoner, che riceve due valori booleani che indicano rispettivamente se l'arciere e il prigioniero sono svegli. La funzione restituisce true se si può segnalare al prigioniero, in base allo stato dei due personaggi. Altrimenti restituisce false:
let archerIsAwake = false
let prisonerIsAwake = true
canSignalPrisoner(archerIsAwake, prisonerIsAwake)
// => true
Implementa la funzione canFreePrisoner, che riceve quattro valori booleani. I primi tre parametri indicano rispettivamente se il cavaliere, l'arciere ed il prigioniero sono svegli. L'ultimo parametro indica se il cane di Annalyn è presente. La funzione restituisce true se si può liberare il prigioniero, in base allo stato dei tre personaggi e alla presenza del cane di Annalyn. Altrimenti restituisce false:
let knightIsAwake = false
let archerIsAwake = true
let prisonerIsAwake = false
let petDogIsPresent = false
canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent)
// => false
Iscriviti a Exercism per imparare e padroneggiare F# con 18 concetti148 esercizi e il mentoring di persone reali, tutto gratis.