Track
/
Julia
Julia
/
Esercizi
/
L'infiltrazione di Annalyn
L'infiltrazione di Annalyn

L'infiltrazione di Annalyn

Esercizio di apprendimento

Introduzione

I booleani in Julia

I valori vero o falso sono rappresentati dal tipo Bool. Contiene solo due valori: true e false.

julia> true
true

julia> false
false

Operatori booleani

Ci sono tre operatori booleani in Julia.

&& è l'operatore booleano «and». Restituisce true se le espressioni su entrambi i lati di && sono true.

julia> true && true
true

julia> true && false
false

|| è l'operatore booleano «or». Restituisce true se un'espressione su uno dei due lati di || è true.

julia> true || true
true

julia> false || true
true

! è l'operatore booleano «not». Scambia i valori true e false.

julia> !true
false

julia> !false
true

Per espressioni più lunghe e complicate, è meglio usare le parentesi tonde per rendere chiara la tua intenzione.

julia> (true || false) && (false && true)
false

Istruzioni

In questo esercizio scriverai un po' di logica per un videogioco che un amico sta sviluppando. La protagonista del gioco è Annalyn, una ragazza coraggiosa con un cane feroce e fedele. Purtroppo arriva la catastrofe: la sua migliore amica viene rapita mentre cerca bacche nel bosco. Annalyn cercherà di trovare e liberare la sua amica, con la possibilità di portare con sé il cane in questa missione.

Alla fine Annalyn trova il campo in cui è imprigionata la sua amica e scopre che i rapitori sono due: un cavaliere possente e un astuto arciere.

Al giocatore vengono proposte alcune opzioni su cosa fare in seguito. Per ognuna delle quattro opzioni possibili devi scrivere una funzione che dice al gioco se mostrare o meno quell'opzione.

1. Verifica se l'opzione "Attacco rapido" deve essere mostrata

Se il cavaliere sta dormendo, Annalyn potrà sferrare un attacco rapido nel campo prima che lui si svegli per bene e indossi l'armatura.

Implementa una funzione chiamata can_do_fast_attack che prende un valore booleano che indica se il cavaliere è sveglio. Questa funzione restituisce true se l'azione "Attacco rapido" è disponibile in base allo stato del personaggio. Altrimenti restituisce false:

julia> knight_awake = true

julia> can_do_fast_attack(knight_awake)
false

2. Verifica se l'opzione "Spia" deve essere mostrata

Si può spiare il gruppo se almeno uno di loro è sveglio. Altrimenti spiare è una perdita di tempo.

Implementa una funzione chiamata can_spy che prende tre valori booleani, che indicano rispettivamente se il cavaliere, l'arciere e la prigioniera sono svegli. La funzione restituisce true se l'azione "Spia" è disponibile in base allo stato dei personaggi. Altrimenti restituisce 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. Verifica se l'opzione "Segnala alla prigioniera" deve essere mostrata

Si può segnalare alla prigioniera usando versi di uccelli se la prigioniera è sveglia e l'arciere sta dormendo. Se l'arciere è sveglio, invece, non la si può segnalare in sicurezza, perché anche l'arciere è addestrato ai segnali con i versi degli uccelli.

Implementa una funzione chiamata can_signal_prisoner che prende due valori booleani, che indicano rispettivamente se l'arciere e la prigioniera sono svegli. La funzione restituisce true se l'azione "Segnala alla prigioniera" è disponibile in base allo stato dei personaggi. Altrimenti restituisce false:

julia> archer_awake = false
julia> prisoner_awake = true

julia> can_signal_prisoner(archer_awake, prisoner_awake)
true

4. Verifica se l'opzione "Libera la prigioniera" deve essere mostrata

Annalyn può provare a intrufolarsi nel campo per liberare la sua amica. È una cosa rischiosa e può riuscire solo in uno di due modi:

  • Se Annalyn ha con sé il cane, può salvare la prigioniera se l'arciere dorme. Il cavaliere ha paura del cane e l'arciere non avrà il tempo di prepararsi prima che Annalyn e la sua amica riescano a scappare.

  • Se Annalyn non ha il cane, allora lei e la prigioniera devono essere molto furtive! Annalyn può liberare la prigioniera se è sveglia e il cavaliere e l'arciere stanno entrambi dormendo, ma se la prigioniera dorme non può essere salvata: si spaventerebbe per l'apparizione improvvisa di Annalyn e sveglierebbe il cavaliere e l'arciere.

Implementa una funzione chiamata can_free_prisoner che prende quattro valori booleani. I primi tre parametri indicano rispettivamente se il cavaliere, l'arciere e la prigioniera sono svegli. L'ultimo parametro indica se il cane di Annalyn è presente. La funzione restituisce true se l'azione "Libera la prigioniera" è disponibile in base allo stato dei personaggi. Altrimenti restituisce 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
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Julia Exercism

Vuoi iniziare L'infiltrazione di Annalyn?

Iscriviti a Exercism per imparare e padroneggiare Julia con 35 concetti128 esercizi e il mentoring di persone reali, tutto gratis.