Valores verdadeiros ou falsos são representados pelo tipo Bool.
Ele contém apenas dois valores: true e false.
julia> true
true
julia> false
false
Existem três operadores Boolean em Julia.
&& é o "e" Boolean.
Ele resulta em true se as expressões em ambos os lados de && forem true.
julia> true && true
true
julia> true && false
false
|| é o "ou" Boolean.
Ele resulta em true se uma expressão em qualquer um dos lados de || for true.
julia> true || true
true
julia> false || true
true
! é o "não" Boolean.
Ele troca os valores true e false.
julia> !true
false
julia> !false
true
Para expressões mais longas e mais complicadas, é melhor usar parênteses para deixar clara a sua intenção.
julia> (true || false) && (false && true)
false
Neste exercício, você vai escrever um pouco de lógica para um videogame que um amigo está desenvolvendo. A personagem principal do jogo é Annalyn, uma garota corajosa que tem um cachorro de estimação feroz e leal. Infelizmente, o desastre acontece: sua melhor amiga é sequestrada enquanto procura frutas silvestres na floresta. Annalyn vai tentar encontrar e libertar sua amiga, podendo levar seu cachorro com ela nessa missão.
Annalyn acaba encontrando o acampamento onde sua amiga está presa e descobre que há dois sequestradores: um cavaleiro poderoso e um arqueiro astuto.
Quem joga recebe algumas opções sobre o que fazer em seguida. Para cada uma das quatro opções possíveis, você precisa escrever uma função que diz ao jogo se ele deve mostrar aquela opção ou não.
Se o cavaleiro estiver dormindo, Annalyn vai conseguir fazer um ataque rápido ao acampamento antes que ele acorde direito e vista sua armadura.
Implemente uma função chamada can_do_fast_attack que recebe um valor Boolean indicando se o cavaleiro está acordado.
Essa função retorna true se a ação 'Ataque Rápido' estiver disponível de acordo com o estado da personagem. Caso contrário, retorna false:
julia> knight_awake = true
julia> can_do_fast_attack(knight_awake)
false
É possível espionar o grupo se pelo menos uma das pessoas estiver acordada. Caso contrário, espionar é perda de tempo.
Implemente uma função chamada can_spy que recebe três valores Boolean, indicando se o cavaleiro, o arqueiro e a prisioneira, respectivamente, estão acordados.
A função retorna true se a ação 'Espionar' estiver disponível de acordo com o estado das personagens.
Caso contrário, retorna false:
# Output suppressed from the next 3 lines
julia> knight_awake = false
julia> archer_awake = true
julia> prisoner_awake = false
julia> can_spy(knight_awake, archer_awake, prisoner_awake)
true
É possível sinalizar para a prisioneira usando sons de pássaros se ela estiver acordada e o arqueiro estiver dormindo. Se o arqueiro estiver acordado, não dá para sinalizar com segurança, porque ele também é treinado em sinais de pássaros.
Implemente uma função chamada can_signal_prisoner que recebe dois valores Boolean, indicando se o arqueiro e a prisioneira, respectivamente, estão acordados.
A função retorna true se a ação 'Sinalizar a Prisioneira' estiver disponível de acordo com o estado das personagens.
Caso contrário, retorna false:
julia> archer_awake = false
julia> prisoner_awake = true
julia> can_signal_prisoner(archer_awake, prisoner_awake)
true
Annalyn pode tentar se esgueirar até o acampamento para libertar sua amiga. Isso é arriscado e só tem duas maneiras de dar certo:
Se Annalyn estiver com seu cachorro, ela consegue resgatar a prisioneira se o arqueiro estiver dormindo. O cavaleiro tem medo do cachorro, e o arqueiro não vai ter tempo de se preparar antes que Annalyn e sua amiga fujam.
Se Annalyn não estiver com seu cachorro, ela e a prisioneira vão precisar ser bem furtivas! Annalyn consegue libertar a prisioneira se ela estiver acordada e o cavaleiro e o arqueiro estiverem ambos dormindo, mas se a prisioneira estiver dormindo, não dá para resgatá-la: ela se assustaria com a aparição repentina de Annalyn e acordaria o cavaleiro e o arqueiro.
Implemente uma função chamada can_free_prisoner que recebe quatro valores Boolean.
Os três primeiros parâmetros indicam se o cavaleiro, o arqueiro e a prisioneira, respectivamente, estão acordados.
O último parâmetro indica se o cachorro de Annalyn está presente.
A função retorna true se a ação 'Libertar a Prisioneira' estiver disponível de acordo com o estado das personagens. Caso contrário, ela retorna false:
julia> knight_awake = false
julia> archer_awake = true
julia> prisoner_awake = false
julia> dog_present = false
julia> can_free_prisoner(knight_awake, archer_awake, prisoner_awake, dog_present)
false
Crie sua conta no Exercism para aprender e dominar Julia com 35 conceitos128 exercícios e mentoria humana de verdade, tudo de graça.