Elixir rappresenta i valori vero e falso con il tipo booleano. Esistono solo due valori: true e false. Questi valori possono essere assegnati a una variabile:
true_variable = true
false_variable = false
Possiamo valutare espressioni booleane rigorose usando gli operatori and/2, or/2 e not/1.
true_variable = true and true
false_variable = true and false
true_variable = false or true
false_variable = false or false
true_variable = not false
false_variable = not true
Quando scriviamo una funzione che restituisce un valore booleano, è idiomatico terminare il nome della funzione con un ?. La stessa convenzione si può usare per le variabili che memorizzano valori booleani.
def either_true?(a?, b?) do
a? or b?
end
In questo esercizio, tradurrai alcune regole del classico gioco Pac-Man in funzioni Elixir.
Hai quattro regole da tradurre, tutte legate agli stati del gioco.
Non preoccuparti di come vengono ricavati gli argomenti: concentrati solo sul combinarli per restituire il risultato voluto.
Definisci la funzione Rules.eat_ghost?/2 che accetta due argomenti (se Pac-Man ha una pillola energetica attiva e se Pac-Man sta toccando un fantasma) e restituisce un valore booleano che indica se Pac-Man è in grado di mangiare il fantasma. La funzione dovrebbe restituire true solo se Pac-Man ha una pillola energetica attiva e sta toccando un fantasma.
Rules.eat_ghost?(false, true)
# => false
Definisci la funzione Rules.score?/2 che accetta due argomenti (se Pac-Man sta toccando una pillola energetica e se Pac-Man sta toccando un pallino) e restituisce un valore booleano che indica se Pac-Man ha segnato. La funzione dovrebbe restituire true se Pac-Man sta toccando una pillola energetica o un pallino.
Rules.score?(true, true)
# => true
Definisci la funzione Rules.lose?/2 che accetta due argomenti (se Pac-Man ha una pillola energetica attiva e se Pac-Man sta toccando un fantasma) e restituisce un valore booleano che indica se Pac-Man perde. La funzione dovrebbe restituire true se Pac-Man sta toccando un fantasma e non ha una pillola energetica attiva.
Rules.lose?(false, true)
# => true
Definisci la funzione Rules.win?/3 che accetta tre argomenti (se Pac-Man ha mangiato tutti i pallini, se Pac-Man ha una pillola energetica attiva e se Pac-Man sta toccando un fantasma) e restituisce un valore booleano che indica se Pac-Man vince. La funzione dovrebbe restituire true se Pac-Man ha mangiato tutti i pallini e non ha perso in base agli argomenti definiti nella parte 3.
Rules.win?(false, true, false)
# => false
Iscriviti a Exercism per imparare e padroneggiare Elixir con 58 concetti168 esercizi e il mentoring di persone reali, tutto gratis.