O Elixir representa os valores verdadeiro e falso com o tipo booleano. Existem apenas dois valores: true e false. Estes valores podem ser associados a uma variável:
true_variable = true
false_variable = false
Podemos avaliar expressões booleanas estritas com os operadores 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 escreves uma função que devolve um valor booleano, é idiomático terminar o nome da função com um ?. A mesma convenção pode ser usada para variáveis que guardam valores booleanos.
def either_true?(a?, b?) do
a? or b?
end
Neste exercício, precisas de traduzir algumas regras do clássico jogo Pac-Man para funções de Elixir.
Tens quatro regras para traduzir, todas relacionadas com os estados do jogo.
Não te preocupes com a forma como os argumentos são obtidos, concentra-te apenas em combinar os argumentos para devolver o resultado pretendido.
Define a função Rules.eat_ghost?/2, que recebe dois argumentos (se o Pac-Man tem uma pastilha de energia ativa e se o Pac-Man está a tocar num fantasma) e devolve um valor Boolean que indica se o Pac-Man consegue comer o fantasma. A função só deve devolver true se o Pac-Man tiver uma pastilha de energia ativa e estiver a tocar num fantasma.
Rules.eat_ghost?(false, true)
# => false
Define a função Rules.score?/2, que recebe dois argumentos (se o Pac-Man está a tocar numa pastilha de energia e se o Pac-Man está a tocar num ponto) e devolve um valor Boolean que indica se o Pac-Man pontuou. A função deve devolver true se o Pac-Man estiver a tocar numa pastilha de energia ou num ponto.
Rules.score?(true, true)
# => true
Define a função Rules.lose?/2, que recebe dois argumentos (se o Pac-Man tem uma pastilha de energia ativa e se o Pac-Man está a tocar num fantasma) e devolve um valor Boolean que indica se o Pac-Man perde. A função deve devolver true se o Pac-Man estiver a tocar num fantasma e não tiver uma pastilha de energia ativa.
Rules.lose?(false, true)
# => true
Define a função Rules.win?/3, que recebe três argumentos (se o Pac-Man comeu todos os pontos, se o Pac-Man tem uma pastilha de energia ativa e se o Pac-Man está a tocar num fantasma) e devolve um valor Boolean que indica se o Pac-Man ganha. A função deve devolver true se o Pac-Man tiver comido todos os pontos e não tiver perdido, de acordo com os argumentos definidos na parte 3.
Rules.win?(false, true, false)
# => false
Inscreve-te no Exercism para aprenderes e dominares Elixir com 58 conceitos168 exercícios, e mentoria humana real, tudo grátis.