Kurzusok
/
F#
F#
/
Feladatok
/
Annalyn beszivárgása
Annalyn beszivárgása

Annalyn beszivárgása

Tanulófeladat

Bevezetés

Boolean

A F#-ban a Boolean értékeket a bool típus képviseli, melynek értéke true vagy false lehet.

A F# három Boolean-operátort támogat: a not (NOT), a && (AND) és a || (OR) operátort.

Utasítások

Ebben a feladatban egy barátod által fejlesztett új RPG játék küldetéslogikáját fogod megvalósítani. A játék főszereplője Annalyn, egy bátor lány, akinek van egy elszánt és hűséges kutyája. Sajnos azonban baj történik: a legjobb barátját elrabolták, miközben bogyókat keresett az erdőben. Annalyn megpróbálja megtalálni és kiszabadítani a legjobb barátját, és akár a kutyáját is magával viheti erre a küldetésre.

Miután egy ideig a legjobb barátja nyomát követi, megtalálja a tábort, ahol a barátját fogva tartják. Kiderül, hogy két emberrabló van: egy hatalmas lovag és egy ravasz íjász.

Miután megtalálta az emberrablókat, Annalyn végiggondolja, hogy az alábbi cselekvések közül melyeket tudja végrehajtani:

  • Gyors támadás: gyors támadást akkor lehet végrehajtani, ha a lovag alszik, mivel időbe telik, mire magára ölti a páncélját, így sebezhető lesz.
  • Kémkedés: a csoportot akkor lehet kikémlelni, ha legalább az egyikük ébren van. Egyébként a kémkedés időpocsékolás.
  • Jelzés a fogolynak: a fogolynak madárhangokkal lehet jelezni, ha a fogoly ébren van és az íjász alszik, mivel az íjászokat madárjelzésre képezték ki, így elfoghatnák az üzenetet.
  • Fogoly kiszabadítása: Annalyn megpróbálhat belopózni a táborba, hogy kiszabadítsa a foglyot. Ez kockázatos dolog, és csak kétféleképpen sikerülhet:
    • Ha Annalyn magával hozta a kutyáját, akkor kiszabadíthatja a foglyot, ha az íjász alszik. A lovag fél a kutyától, és az íjásznak nem lesz ideje felkészülni, mire Annalyn és a fogoly meg tud szökni.
    • Ha Annalyn nincs a kutyájával, akkor neki és a fogolynak nagyon óvatosnak kell lennie! Annalyn akkor tudja kiszabadítani a foglyot, ha a fogoly ébren van, a lovag és az íjász pedig alszik. Ha viszont a fogoly alszik, nem lehet kiszabadítani: a fogoly megijedne Annalyn hirtelen felbukkanásától, és felébresztené a lovagot és az íjászt.

Négy részfeladatod van: megvalósítani a logikát, amely az erdőben talált három szereplő állapota, valamint Annalyn kutyájának jelenléte vagy hiánya alapján eldönti, hogy a fenti cselekvések elvégezhetők-e.

1. Ellenőrizd, hogy végrehajtható-e egy gyors támadás

Valósítsd meg a canFastAttack függvényt, amely egy Boolean értéket kap, ami azt jelzi, hogy a lovag ébren van-e. A függvény true-t ad vissza, ha a lovag állapota alapján végrehajtható egy gyors támadás. Egyébként false-t ad vissza:

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

2. Ellenőrizd, hogy kikémlelhető-e a csoport

Valósítsd meg a canSpy függvényt, amely három Boolean értéket kap: ezek rendre azt jelzik, hogy a lovag, az íjász és a fogoly ébren van-e. A függvény true-t ad vissza, ha a három szereplő állapota alapján kikémlelhető a csoport. Egyébként false-t ad vissza:

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

3. Ellenőrizd, hogy jelezni lehet-e a fogolynak

Valósítsd meg a canSignalPrisoner függvényt, amely két Boolean értéket kap: ezek rendre azt jelzik, hogy az íjász és a fogoly ébren van-e. A függvény true-t ad vissza, ha a két szereplő állapota alapján jelezni lehet a fogolynak. Egyébként false-t ad vissza:

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

4. Ellenőrizd, hogy kiszabadítható-e a fogoly

Valósítsd meg a canFreePrisoner függvényt, amely négy Boolean értéket kap. Az első három paraméter rendre azt jelzi, hogy a lovag, az íjász és a fogoly ébren van-e. Az utolsó paraméter azt jelzi, hogy Annalyn kutyája ott van-e. A függvény true-t ad vissza, ha a három szereplő állapota és Annalyn kutyájának jelenléte alapján kiszabadítható a fogoly. Egyébként false-t ad vissza:

let knightIsAwake = false
let archerIsAwake = true
let prisonerIsAwake = false
let petDogIsPresent = false
canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent)
// => false
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
F# Exercism

Készen állsz elkezdeni a(z) Annalyn beszivárgása feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) F# nyelvet 18 fogalom148 feladat segítségével, valódi emberi mentorálással, mindez ingyen.