Elixir representa los valores verdadero y falso con el tipo booleano. Solo hay dos valores: true y false. Estos valores se pueden vincular a una variable:
true_variable = true
false_variable = false
Podemos evaluar expresiones Boolean estrictas usando los operadores and/2, or/2 y 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
Cuando escribes una función que devuelve un valor Boolean, lo idiomático es terminar el nombre de la función con un ?. La misma convención se puede usar para variables que almacenan valores Boolean.
def either_true?(a?, b?) do
a? or b?
end
En este ejercicio, tienes que traducir algunas reglas del clásico juego Pac-Man a funciones de Elixir.
Tienes cuatro reglas que traducir, todas relacionadas con los estados del juego.
No te preocupes por cómo se derivan los argumentos; simplemente concéntrate en combinarlos para devolver el resultado esperado.
Define la función Rules.eat_ghost?/2, que recibe dos argumentos (si Pac-Man tiene una píldora de poder activa y si Pac-Man está tocando un fantasma) y devuelve un valor de tipo Boolean si Pac-Man puede comerse al fantasma. La función debe devolver true solo si Pac-Man tiene una píldora de poder activa y está tocando un fantasma.
Rules.eat_ghost?(false, true)
# => false
Define la función Rules.score?/2, que recibe dos argumentos (si Pac-Man está tocando una píldora de poder y si Pac-Man está tocando un punto) y devuelve un valor de tipo Boolean si Pac-Man anota. La función debe devolver true si Pac-Man está tocando una píldora de poder o un punto.
Rules.score?(true, true)
# => true
Define la función Rules.lose?/2, que recibe dos argumentos (si Pac-Man tiene una píldora de poder activa y si Pac-Man está tocando un fantasma) y devuelve un valor de tipo Boolean si Pac-Man pierde. La función debe devolver true si Pac-Man está tocando un fantasma y no tiene una píldora de poder activa.
Rules.lose?(false, true)
# => true
Define la función Rules.win?/3, que recibe tres argumentos (si Pac-Man se ha comido todos los puntos, si Pac-Man tiene una píldora de poder activa y si Pac-Man está tocando un fantasma) y devuelve un valor de tipo Boolean si Pac-Man gana. La función debe devolver true si Pac-Man se ha comido todos los puntos y no ha perdido según los argumentos definidos en la parte 3.
Rules.win?(false, true, false)
# => false
Regístrate en Exercism para aprender y dominar Elixir con 58 conceptos168 ejercicios y mentoría humana real, todo gratis.