Elixir representa os valores verdadeiro e falso com o tipo booleano. Existem apenas dois valores: true e false. Esses valores podem ser atribuídos a uma variável:
true_variable = true
false_variable = false
Podemos avaliar expressões booleanas estritas usando 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 você escreve uma função que retorna um valor booleano, é idiomático terminar o nome da função com um ?. A mesma convenção pode ser usada em variáveis que guardam valores booleanos.
def either_true?(a?, b?) do
a? or b?
end
Neste exercício, você precisa traduzir algumas regras do clássico jogo Pac-Man para funções de Elixir.
Você tem quatro regras para traduzir, todas relacionadas aos estados do jogo.
Não se preocupe com a forma como os argumentos são obtidos, apenas foque em combinar os argumentos para retornar o resultado esperado.
Defina a função Rules.eat_ghost?/2, que recebe dois argumentos (se o Pac-Man tem uma pastilha de poder ativa e se o Pac-Man está encostando em um fantasma) e retorna um valor Boolean indicando se o Pac-Man consegue comer o fantasma. A função deve retornar true apenas se o Pac-Man tiver uma pastilha de poder ativa e estiver encostando em um fantasma.
Rules.eat_ghost?(false, true)
# => false
Defina a função Rules.score?/2, que recebe dois argumentos (se o Pac-Man está encostando em uma pastilha de poder e se o Pac-Man está encostando em uma pastilha) e retorna um valor Boolean indicando se o Pac-Man pontuou. A função deve retornar true se o Pac-Man estiver encostando em uma pastilha de poder ou em uma pastilha.
Rules.score?(true, true)
# => true
Defina a função Rules.lose?/2, que recebe dois argumentos (se o Pac-Man tem uma pastilha de poder ativa e se o Pac-Man está encostando em um fantasma) e retorna um valor Boolean indicando se o Pac-Man perdeu. A função deve retornar true se o Pac-Man estiver encostando em um fantasma e não tiver uma pastilha de poder ativa.
Rules.lose?(false, true)
# => true
Defina a função Rules.win?/3, que recebe três argumentos (se o Pac-Man comeu todas as pastilhas, se o Pac-Man tem uma pastilha de poder ativa e se o Pac-Man está encostando em um fantasma) e retorna um valor Boolean indicando se o Pac-Man venceu. A função deve retornar true se o Pac-Man tiver comido todas as pastilhas e não tiver perdido com base nos argumentos definidos na parte 3.
Rules.win?(false, true, false)
# => false
Crie sua conta no Exercism para aprender e dominar Elixir com 58 conceitos168 exercícios e mentoria humana de verdade, tudo de graça.