Elixir représente les valeurs vrai et faux avec le type booléen. Il n'y a que deux valeurs : true et false. On peut affecter ces valeurs à une variable :
true_variable = true
false_variable = false
On peut évaluer des expressions booléennes strictes à l'aide des opérateurs and/2, or/2 et 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
Quand on écrit une fonction qui renvoie une valeur booléenne, il est idiomatique de terminer le nom de la fonction par un ?. On peut utiliser la même convention pour les variables qui stockent des valeurs booléennes.
def either_true?(a?, b?) do
a? or b?
end
Dans cet exercice, on va traduire quelques règles du jeu classique Pac-Man en fonctions Elixir.
Il y a quatre règles à traduire, toutes liées aux états du jeu.
Ne te préoccupe pas de la façon dont les arguments sont obtenus, concentre-toi simplement sur leur combinaison pour renvoyer le résultat voulu.
Définis la fonction Rules.eat_ghost?/2 qui prend deux arguments (si Pac-Man a une super pac-gomme active et si Pac-Man touche un fantôme) et renvoie une valeur booléenne indiquant si Pac-Man peut manger le fantôme. La fonction doit renvoyer vrai uniquement si Pac-Man a une super pac-gomme active et touche un fantôme.
Rules.eat_ghost?(false, true)
# => false
Définis la fonction Rules.score?/2 qui prend deux arguments (si Pac-Man touche une super pac-gomme et si Pac-Man touche une pac-gomme) et renvoie une valeur booléenne indiquant si Pac-Man a marqué des points. La fonction doit renvoyer vrai si Pac-Man touche une super pac-gomme ou une pac-gomme.
Rules.score?(true, true)
# => true
Définis la fonction Rules.lose?/2 qui prend deux arguments (si Pac-Man a une super pac-gomme active et si Pac-Man touche un fantôme) et renvoie une valeur booléenne indiquant si Pac-Man perd. La fonction doit renvoyer vrai si Pac-Man touche un fantôme et n'a pas de super pac-gomme active.
Rules.lose?(false, true)
# => true
Définis la fonction Rules.win?/3 qui prend trois arguments (si Pac-Man a mangé toutes les pac-gommes, si Pac-Man a une super pac-gomme active et si Pac-Man touche un fantôme) et renvoie une valeur booléenne indiquant si Pac-Man gagne. La fonction doit renvoyer vrai si Pac-Man a mangé toutes les pac-gommes et n'a pas perdu d'après les arguments définis dans la partie 3.
Rules.win?(false, true, false)
# => false
Inscris-toi sur Exercism pour apprendre et maîtriser Elixir avec 58 concepts168 exercices, et un vrai mentorat humain, le tout gratuitement.