Les valeurs vrai ou faux sont représentées par le type Bool.
Il ne contient que deux valeurs : true et false.
julia> true
true
julia> false
false
Il existe trois opérateurs booléens en Julia.
&& est l'opérateur booléen « et ».
Il renvoie true si les expressions des deux côtés de && valent true.
julia> true && true
true
julia> true && false
false
|| est l'opérateur booléen « ou ».
Il renvoie true si une expression de l'un ou l'autre côté de || vaut true.
julia> true || true
true
julia> false || true
true
! est l'opérateur booléen « non ».
Il échange les valeurs true et false.
julia> !true
false
julia> !false
true
Pour les expressions plus longues et plus compliquées, il vaut mieux utiliser des parenthèses pour que ton intention soit claire.
julia> (true || false) && (false && true)
false
Dans cet exercice, tu vas écrire une partie de la logique d'un jeu vidéo que développe un ami. Le personnage principal du jeu est Annalyn, une jeune fille courageuse accompagnée d'un chien fidèle et fougueux. Malheureusement, le malheur frappe : sa meilleure amie est enlevée alors qu'elle cherche des baies dans la forêt. Annalyn va tenter de retrouver et de libérer son amie, en emmenant éventuellement son chien dans cette quête.
Annalyn finit par trouver le camp où son amie est retenue prisonnière, et il s'avère qu'il y a deux ravisseurs : un chevalier puissant et un archer rusé.
Le joueur se voit proposer plusieurs options pour la suite. Pour chacune des quatre options possibles, tu dois écrire une fonction qui indique au jeu s'il doit afficher cette option ou non.
Si le chevalier dort, Annalyn pourra lancer une attaque rapide dans le camp avant qu'il ait le temps de se réveiller complètement et d'enfiler son armure.
Implémente une fonction nommée can_do_fast_attack qui prend une valeur booléenne indiquant si le chevalier est éveillé.
Cette fonction renvoie true si l'action « Attaque rapide » est disponible selon l'état du personnage. Sinon, elle renvoie false :
julia> knight_awake = true
julia> can_do_fast_attack(knight_awake)
false
On peut espionner le groupe si au moins l'un d'entre eux est éveillé. Sinon, l'espionnage est une perte de temps.
Implémente une fonction nommée can_spy qui prend trois valeurs booléennes indiquant respectivement si le chevalier, l'archer et la prisonnière sont éveillés.
La fonction renvoie true si l'action « Espionnage » est disponible selon l'état des personnages.
Sinon, elle renvoie 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
On peut signaler la prisonnière à l'aide de sons d'oiseaux si elle est éveillée et que l'archer dort. Si l'archer est éveillé, on ne peut pas la signaler sans risque, car l'archer est lui aussi entraîné aux signaux d'oiseaux.
Implémente une fonction nommée can_signal_prisoner qui prend deux valeurs booléennes indiquant respectivement si l'archer et la prisonnière sont éveillés.
La fonction renvoie true si l'action « Signaler la prisonnière » est disponible selon l'état des personnages.
Sinon, elle renvoie false :
julia> archer_awake = false
julia> prisoner_awake = true
julia> can_signal_prisoner(archer_awake, prisoner_awake)
true
Annalyn peut tenter de se faufiler dans le camp pour libérer son amie. C'est une entreprise risquée, qui ne peut réussir que de deux façons :
Si Annalyn est accompagnée de son chien, elle peut sauver la prisonnière tant que l'archer dort. Le chevalier a peur du chien et l'archer n'aura pas le temps de se préparer avant qu'Annalyn et son amie ne s'échappent.
Si Annalyn n'a pas son chien, elle et la prisonnière doivent alors se montrer très discrètes ! Annalyn peut libérer la prisonnière si celle-ci est éveillée et que le chevalier et l'archer dorment tous les deux, mais si la prisonnière dort, elle ne peut pas être sauvée : elle serait surprise par l'apparition soudaine d'Annalyn et réveillerait le chevalier et l'archer.
Implémente une fonction nommée can_free_prisoner qui prend quatre valeurs booléennes.
Les trois premières indiquent respectivement si le chevalier, l'archer et la prisonnière sont éveillés.
La dernière indique si le chien d'Annalyn est présent.
La fonction renvoie true si l'action « Libérer la prisonnière » est disponible selon l'état des personnages. Sinon, elle renvoie 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
Inscris-toi sur Exercism pour apprendre et maîtriser Julia avec 35 concepts128 exercices, et un vrai mentorat humain, le tout gratuitement.