Tracks
/
F#
F#
/
Übungen
/
Annalyns Infiltration
Annalyns Infiltration

Annalyns Infiltration

Lernübung

Einführung

Boolesche Werte

Boolesche Werte werden in F# durch den Typ bool dargestellt, dessen Werte entweder true oder false sein können.

F# unterstützt drei boolesche Operatoren: not (NICHT), && (UND) und || (ODER).

Anleitung

In dieser Übung implementierst du die Quest-Logik für ein neues RPG, das ein Freund entwickelt. Die Hauptfigur des Spiels ist Annalyn, ein mutiges Mädchen mit einem wilden und treuen Hund. Unglücklicherweise schlägt das Unheil zu: Ihre beste Freundin wurde entführt, während sie im Wald nach Beeren suchte. Annalyn wird versuchen, ihre beste Freundin zu finden und zu befreien, wobei sie ihren Hund optional mit auf diese Quest nehmen kann.

Nachdem sie eine Weile der Spur ihrer besten Freundin gefolgt ist, findet sie das Lager, in dem ihre beste Freundin gefangen gehalten wird. Es stellt sich heraus, dass es zwei Entführer gibt: einen mächtigen Ritter und einen gerissenen Bogenschützen.

Nachdem sie die Entführer gefunden hat, überlegt Annalyn, welche der folgenden Aktionen sie ausführen kann:

  • Schneller Angriff: Ein schneller Angriff ist möglich, wenn der Ritter schläft, denn er braucht Zeit, um seine Rüstung anzulegen, und ist daher verwundbar.
  • Spionieren: Die Gruppe kann ausspioniert werden, wenn mindestens einer von ihnen wach ist. Andernfalls ist Spionieren Zeitverschwendung.
  • Gefangene signalisieren: Der Gefangenen kann mit Vogelgeräuschen signalisiert werden, wenn die Gefangene wach ist und der Bogenschütze schläft, denn Bogenschützen sind im Signalgeben mit Vogelgeräuschen ausgebildet, sodass sie die Nachricht abfangen könnten.
  • Gefangene befreien: Annalyn kann versuchen, sich ins Lager zu schleichen, um die Gefangene 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 fertig zu machen, bevor Annalyn und die Gefangene entkommen können.
    • Wenn Annalyn ihren Hund nicht dabei hat, müssen sie und die Gefangene sehr leise vorgehen! Annalyn kann die Gefangene befreien, wenn die Gefangene wach ist und sowohl der Ritter als auch der Bogenschütze schlafen. Wenn die Gefangene aber schläft, kann sie nicht befreit werden: Die Gefangene würde durch Annalyns plötzliches Auftauchen erschrecken und den Ritter und den Bogenschützen aufwecken.

Du hast vier Aufgaben: die Logik zu implementieren, mit der bestimmt wird, ob die oben genannten Aktionen verfügbar sind. Das hängt vom Zustand der drei im Wald gefundenen Charaktere ab und davon, ob Annalyns Hund dabei ist oder nicht.

1. Prüfe, ob ein schneller Angriff möglich ist

Implementiere die Funktion canFastAttack, die einen booleschen Wert entgegennimmt, der angibt, ob der Ritter wach ist. Diese Funktion gibt true zurück, wenn basierend auf dem Zustand des Ritters ein schneller Angriff möglich ist. Andernfalls gibt sie false zurück:

let knightIsAwake = true
canFastAttack(knightIsAwake)
// => false

2. Prüfe, ob die Gruppe ausspioniert werden kann

Implementiere die Funktion canSpy, 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 Gruppe basierend auf dem Zustand der drei Charaktere ausspioniert werden kann. Andernfalls gibt sie false zurück:

let knightIsAwake = false
let archerIsAwake = true
let prisonerIsAwake = false
canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake)
// => true

3. Prüfe, ob die Gefangene signalisiert werden kann

Implementiere die Funktion canSignalPrisoner, die zwei boolesche Werte entgegennimmt, die angeben, ob der Bogenschütze bzw. die Gefangene wach sind. Die Funktion gibt true zurück, wenn die Gefangene basierend auf dem Zustand der beiden Charaktere signalisiert werden kann. Andernfalls gibt sie false zurück:

let archerIsAwake = false
let prisonerIsAwake = true
canSignalPrisoner(archerIsAwake, prisonerIsAwake)
// => true

4. Prüfe, ob die Gefangene befreit werden kann

Implementiere die Funktion canFreePrisoner, 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 Gefangene basierend auf dem Zustand der drei Charaktere und der Anwesenheit von Annalyns Hund befreit werden kann. Andernfalls gibt sie false zurück:

let knightIsAwake = false
let archerIsAwake = true
let prisonerIsAwake = false
let petDogIsPresent = false
canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent)
// => false
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
F# Exercism

Bereit, mit Annalyns Infiltration zu starten?

Melde dich bei Exercism an, um F# mit 18 Konzepte148 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.