Trilhas
/
Julia
Julia
/
Exercícios
/
A infiltração de Annalyn
A infiltração de Annalyn

A infiltração de Annalyn

Exercício de aprendizagem

Introdução

Boolean em Julia

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

Operadores Boolean

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

Instruções

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.

1. Verifique se a opção 'Ataque Rápido' deve ser mostrada

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

2. Verifique se a opção 'Espionar' deve ser mostrada

É 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

3. Verifique se a opção 'Sinalizar a Prisioneira' deve ser mostrada

É 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

4. Verifique se a opção 'Libertar a Prisioneira' deve ser mostrada

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
Editar via GitHub O link abre em uma nova janela ou aba
Julia Exercism

Tudo pronto para começar A infiltração de Annalyn?

Crie sua conta no Exercism para aprender e dominar Julia com 35 conceitos128 exercícios e mentoria humana de verdade, tudo de graça.