Los valores verdaderos o falsos se representan con el tipo Bool.
Contiene solo dos valores: true y false.
julia> true
true
julia> false
false
En Julia hay tres operadores Boolean.
&& es el «y» Boolean.
Se evalúa a true si las expresiones a ambos lados de && son true.
julia> true && true
true
julia> true && false
false
|| es el «o» Boolean.
Se evalúa a true si alguna 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 escribirás parte de la lógica de un videojuego que está desarrollando un amigo. La protagonista del juego es Annalyn, una chica valiente que tiene un perro feroz y leal. Por desgracia, ocurre una tragedia: su mejor amiga es secuestrada mientras busca bayas en el bosque. Annalyn intentará encontrar y liberar a su amiga, y puede llevar a su perro con ella en esta misión.
Finalmente, Annalyn encuentra el campamento en el que tienen prisionera a su amiga y resulta que hay dos secuestradores: un caballero poderoso y un arquero astuto.
Al jugador se le presentan varias opciones sobre qué hacer a continuación. Para cada una de las cuatro opciones posibles debes escribir una función que le diga al juego si debe mostrar esa opción o no.
Si el caballero está dormido, Annalyn podrá hacer un ataque rápido al campamento antes de que él pueda despertarse del todo y ponerse la armadura.
Implementa una función llamada can_do_fast_attack que recibe un valor Boolean 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. Si no, devuelve false:
julia> knight_awake = true
julia> can_do_fast_attack(knight_awake)
false
Se puede espiar al grupo si al menos uno de ellos está despierto. Si no, espiar es una pérdida de tiempo.
Implementa una función llamada can_spy que recibe tres valores Boolean, que indican si el caballero, el arquero y la prisionera, respectivamente, están despiertos.
La función devuelve true si la acción «Espiar» está disponible según el estado de los personajes.
Si no, 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 le pueden hacer señales a la prisionera con sonidos de pájaros si ella está despierta y el arquero está dormido. Si el arquero está despierto, no se le pueden hacer señales con seguridad, porque el arquero también domina las señales de pájaros.
Implementa una función llamada can_signal_prisoner que recibe dos valores Boolean, que indican si el arquero y la prisionera, respectivamente, están despiertos.
La función devuelve true si la acción «Hacer señales a la prisionera» está disponible según el estado de los personajes.
Si no, 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 algo arriesgado y solo puede salir bien de una de estas dos formas:
Si Annalyn lleva a su perro con ella, 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, ella y la prisionera tendrán que ser muy sigilosas. Annalyn puede liberar a la prisionera si 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 Boolean.
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 a la prisionera» está disponible según el estado de los personajes. Si no, 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.