Tracks
/
Julia
Julia
/
Übungen
/
Annalyns Infiltration
Annalyns Infiltration

Annalyns Infiltration

Lernübung

Einführung

Boolesche Werte in Julia

Wahrheitswerte werden durch den Typ Bool dargestellt. Er enthält nur zwei Werte: true und false.

julia> true
true

julia> false
false

Boolesche Operatoren

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

Anleitung

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.

1. Prüfen, ob die Option „Schneller Angriff" angezeigt werden soll

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

2. Prüfen, ob die Option „Spionieren" angezeigt werden soll

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

3. Prüfen, ob die Option „Gefangene signalisieren" angezeigt werden soll

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

4. Prüfen, ob die Option „Gefangene befreien" angezeigt werden soll

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
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Julia Exercism

Bereit, mit Annalyns Infiltration zu starten?

Melde dich bei Exercism an, um Julia mit 35 Konzepte128 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.