Wahrheitswerte werden durch den Typ Bool dargestellt.
Er enthält nur zwei Werte: true und false.
julia> true
true
julia> false
false
In Julia gibt es drei boolesche Operatoren.
&& steht für das boolesche „und“.
Er ergibt true, wenn die Ausdrücke auf beiden Seiten von && true sind.
julia> true && true
true
julia> true && false
false
|| steht für das boolesche „oder“.
Er ergibt true, wenn ein Ausdruck auf einer der beiden Seiten von || true ist.
julia> true || true
true
julia> false || true
true
! steht für das boolesche „nicht“.
Er vertauscht die Werte true und false.
julia> !true
false
julia> !false
true
Bei längeren und komplizierteren Ausdrücken ist es am besten, runde Klammern zu verwenden, um deine Absicht klar zu machen.
julia> (true || false) && (false && true)
false
In dieser Übung schreibst du etwas Logik für ein Videospiel, das ein Freund von dir entwickelt. Die Hauptfigur des Spiels ist Annalyn, ein mutiges Mädchen mit einem wilden und treuen Hund. Doch dann schlägt das Unglück zu: Ihre beste Freundin wird entführt, während sie im Wald nach Beeren sucht. Annalyn wird versuchen, ihre Freundin zu finden und zu befreien, wobei sie ihren Hund auf dieser Suche mitnehmen kann.
Schließlich findet Annalyn das Lager, in dem ihre Freundin gefangen gehalten wird, und es stellt sich heraus, dass es zwei Entführer gibt: einen mächtigen Ritter und einen listigen Bogenschützen.
Dem Spieler werden einige Optionen für das weitere Vorgehen angezeigt. Für jede der vier möglichen Optionen musst du eine Funktion schreiben, die dem Spiel sagt, ob es diese Option anzeigen soll oder nicht.
Wenn der Ritter schläft, kann Annalyn einen schnellen Angriff auf das Lager machen, bevor er richtig aufwachen und seine Rüstung anlegen kann.
Implementiere eine Funktion namens can_do_fast_attack, die einen booleschen Wert entgegennimmt, der angibt, ob der Ritter wach ist. Diese Funktion gibt true zurück, wenn die Aktion „Schneller Angriff" je nach Zustand der Figur verfügbar ist. Andernfalls gibt sie false zurück:
julia> knight_awake = true
julia> can_do_fast_attack(knight_awake)
false
Die Gruppe kann ausspioniert werden, wenn mindestens einer von ihnen wach ist. Andernfalls ist Spionieren Zeitverschwendung.
Implementiere eine Funktion namens can_spy, die drei boolesche Werte entgegennimmt, die angeben, ob der Ritter, der Bogenschütze bzw. die Gefangene wach sind. Die Funktion gibt true zurück, wenn die Aktion „Spionieren" je nach Zustand der Figuren verfügbar ist. Andernfalls gibt sie false zurück:
# 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
Die Gefangene kann mit Vogelstimmen signalisiert werden, wenn sie wach ist und der Bogenschütze schläft. Wenn der Bogenschütze wach ist, kann sie nicht sicher signalisiert werden, weil der Bogenschütze ebenfalls darin ausgebildet ist, mit Vogelstimmen zu signalisieren.
Implementiere eine Funktion namens can_signal_prisoner, die zwei boolesche Werte entgegennimmt, die angeben, ob der Bogenschütze bzw. die Gefangene wach sind. Die Funktion gibt true zurück, wenn die Aktion „Gefangene signalisieren" je nach Zustand der Figuren verfügbar ist. Andernfalls gibt sie false zurück:
julia> archer_awake = false
julia> prisoner_awake = true
julia> can_signal_prisoner(archer_awake, prisoner_awake)
true
Annalyn kann versuchen, sich ins Lager zu schleichen, um ihre Freundin zu befreien. Das ist riskant und kann nur auf eine von zwei Arten gelingen:
Wenn Annalyn ihren Hund dabei hat, kann sie die Gefangene befreien, wenn der Bogenschütze schläft. Der Ritter hat Angst vor dem Hund, und der Bogenschütze wird keine Zeit haben, sich bereit zu machen, bevor Annalyn und ihre Freundin entkommen können.
Wenn Annalyn ihren Hund nicht dabei hat, müssen sie und die Gefangene sehr leise sein! Annalyn kann die Gefangene befreien, wenn diese wach ist und sowohl der Ritter als auch der Bogenschütze schlafen. Wenn die Gefangene jedoch schläft, kann sie nicht befreit werden: Sie würde durch Annalyns plötzliches Auftauchen erschrecken und den Ritter und den Bogenschützen aufwecken.
Implementiere eine Funktion namens can_free_prisoner, die vier boolesche Werte entgegennimmt.
Die ersten drei Parameter geben an, ob der Ritter, der Bogenschütze bzw. die Gefangene wach sind.
Der letzte Parameter gibt an, ob Annalyns Hund dabei ist.
Die Funktion gibt true zurück, wenn die Aktion „Gefangene befreien" je nach Zustand der Figuren verfügbar ist. Andernfalls gibt sie false zurück:
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
Melde dich bei Exercism an, um Julia mit 35 Konzepte128 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.