I valori vero o falso sono rappresentati dal tipo Bool.
Contiene solo due valori: true e false.
julia> true
true
julia> false
false
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
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.
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
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
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
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
Iscriviti a Exercism per imparare e padroneggiare Julia con 35 concetti128 esercizi e il mentoring di persone reali, tutto gratis.