Elixir representa los valores verdadero y falso con el tipo booleano. Solo hay dos valores: true y false. Estos valores se pueden asignar a una variable:
true_variable = true
false_variable = false
Podemos evaluar expresiones booleanas estrictas con 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 booleano, lo idiomático es terminar el nombre de la función con un ?. La misma convención se puede usar con las variables que guardan valores booleanos.
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 obtienen los argumentos; cé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 a un fantasma) y devuelve un valor Boolean que indica si Pac-Man es capaz de comerse al fantasma. La función debe devolver true solo si Pac-Man tiene una píldora de poder activa y está tocando a 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 Boolean que indica si Pac-Man ha puntuado. 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 a un fantasma) y devuelve un valor Boolean que indica si Pac-Man pierde. La función debe devolver true si Pac-Man está tocando a 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 a un fantasma) y devuelve un valor Boolean que indica 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.