Los valores verdadero o falso se representan con el tipo Bool.
Contiene solo dos valores: true y false.
julia> true
true
julia> false
false
Hay tres operadores Boolean en Julia.
&& es el «y» Boolean.
Se evalúa como true si las expresiones en ambos lados de && son true.
julia> true && true
true
julia> true && false
false
|| es el «o» Boolean.
Se evalúa como true si una expresión en cualquiera de los lados de || es true.
julia> true || true
true
julia> false || true
true
! es el «no» Boolean.
Intercambia los valores true y false.
julia> !true
false
julia> !false
true
Para expresiones más largas y complicadas, lo mejor es usar paréntesis para dejar clara tu intención.
julia> (true || false) && (false && true)
false
En este ejercicio vas a escribir algo de lógica para un videojuego que está desarrollando un amigo. La protagonista del juego es Annalyn, una chica valiente que tiene un perro como mascota, feroz y leal. Por desgracia, ocurre una catástrofe: su mejor amiga es secuestrada mientras busca bayas en el bosque. Annalyn intentará encontrar y liberar a su amiga, con la opción de llevar a su perro consigo en esta misión.
Annalyn acaba encontrando el campamento en el que está encerrada su amiga y resulta que hay dos secuestradores: un caballero poderoso y un arquero astuto.
El jugador tiene varias opciones sobre qué hacer a continuación. Para cada una de las cuatro opciones posibles, debes escribir una función que le indique al juego si debe mostrar esa opción o no.
Si el caballero está durmiendo, Annalyn podrá lanzar un ataque rápido contra el campamento antes de que él se despierte del todo y se ponga la armadura.
Implementa una función llamada can_do_fast_attack que recibe un valor booleano que indica si el caballero está despierto.
Esta función devuelve true si la acción «ataque rápido» está disponible según el estado del personaje. En caso contrario, devuelve false:
julia> knight_awake = true
julia> can_do_fast_attack(knight_awake)
false
Se puede espiar al grupo si al menos uno de sus miembros está despierto. En caso contrario, espiar es una pérdida de tiempo.
Implementa una función llamada can_spy que recibe tres valores booleanos, que indican si el caballero, el arquero y la prisionera, respectivamente, están despiertos.
La función devuelve true si la acción «espía» está disponible según el estado de los personajes.
En caso contrario, devuelve 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
Se puede hacer una señal a la prisionera usando sonidos de pájaros si ella está despierta y el arquero está durmiendo. Si el arquero está despierto, no se le puede hacer la señal con seguridad, porque el arquero también domina las señales con pájaros.
Implementa una función llamada can_signal_prisoner que recibe dos valores booleanos, que indican si el arquero y la prisionera, respectivamente, están despiertos.
La función devuelve true si la acción «señal al prisionero» está disponible según el estado de los personajes.
En caso contrario, devuelve false:
julia> archer_awake = false
julia> prisoner_awake = true
julia> can_signal_prisoner(archer_awake, prisoner_awake)
true
Annalyn puede intentar colarse en el campamento para liberar a su amiga. Es una acción arriesgada y solo puede salir bien de una de estas dos maneras:
Si Annalyn lleva consigo a su perro, puede rescatar a la prisionera si el arquero está dormido. El caballero le tiene miedo al perro y el arquero no tendrá tiempo de prepararse antes de que Annalyn y su amiga escapen.
Si Annalyn no lleva a su perro, tanto ella como la prisionera tendrán que ser muy sigilosas. Annalyn puede liberar a la prisionera si esta está despierta y el caballero y el arquero están los dos dormidos, pero si la prisionera está dormida, no se la puede rescatar: se asustaría con la aparición repentina de Annalyn y despertaría al caballero y al arquero.
Implementa una función llamada can_free_prisoner que recibe cuatro valores booleanos.
Los tres primeros parámetros indican si el caballero, el arquero y la prisionera, respectivamente, están despiertos.
El último parámetro indica si el perro de Annalyn está presente.
La función devuelve true si la acción «liberar al prisionero» está disponible según el estado de los personajes. En caso contrario, devuelve 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
Regístrate en Exercism para aprender y dominar Julia con 35 conceptos128 ejercicios y mentoría humana real, todo gratis.