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).
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:
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.
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
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
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
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
Melde dich bei Exercism an, um F# mit 18 Konzepte148 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.