Kurzusok
/
Elm
Elm
/
Feladatok
/
Annalyn beszivárgása
Annalyn beszivárgása

Annalyn beszivárgása

Tanulófeladat

Bevezetés

Boolean

A Bool típus a nyelv egyik építőköve. Arra szolgál, hogy leírja, igaz-e vagy hamis valami, a megfelelő True és False értékekkel.

A Boolean értékeket a && („AND”) és a || („OR”) operátorral lehet összekapcsolni, a not függvénnyel pedig negálni.

A Boolean értékek arra is kiválóan alkalmasak, hogy elágazásokat hozz létre a kódodban, amelyek csak akkor futnak le, ha bizonyos feltételek teljesülnek. Elmben ezt egy if-then-else kifejezéssel oldjuk meg, a következőképpen:

if someCondition || (someOtherCondition && anotherCondition) then
    doSomething
else
    doSomethingElse

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 elrabolják, miközben az erdőben bogyókat keres. Annalyn megpróbálja megtalálni és kiszabadítani a legjobb barátját, és erre a küldetésre akár a kutyáját is magával viheti.

Miután egy ideig a legjobb barátja nyomát követi, rábukkan a táborra, 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 melyiket hajthatja végre:

  • Gyors támadás: gyors támadást akkor hajthat végre, ha a lovag alszik, mert időbe telik, míg felveszi a páncélját, így sebezhető lesz.
  • Lopakodó támadás: ha Annalyn észrevétlenül eljut az alvó lovaghoz, a lopakodó támadással 12 sebzést okoz. Ellenkező esetben csak 7 sebzést okoz a lovagnak.
  • Kémkedés: a csoportot akkor lehet kikémlelni, ha legalább az egyikőjük ébren van. Ellenkező esetben 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, mert az íjászokat madárjelekre képezik ki, így elkaphatnák az üzenetet.
  • A fogoly kiszabadítása: Annalyn megpróbálhat belopakodni 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, mielőtt Annalyn és a fogoly elmenekül.
    • Ha Annalynnak nincs ott a kutyája, akkor neki és a fogolynak nagyon óvatosnak kell lennie! Annalyn akkor szabadíthatja ki a foglyot, ha a fogoly ébren van, a lovag és az íjász pedig alszik, de ha a fogoly alszik, nem lehet megmenteni: Annalyn hirtelen felbukkanása megijesztené a foglyot, aki felébresztené a lovagot és az íjászt.

Öt részfeladatod van: megvalósítani a logikát, amely a három, az erdőben talált szereplő állapota, valamint Annalyn kutyájának jelenléte vagy hiánya alapján meghatározza, 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 vár, ami megadja, hogy a lovag ébren van-e. A függvény True értéket ad vissza, ha a lovag állapota alapján végrehajtható egy gyors támadás. Ellenkező esetben False értéket ad vissza:

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 vár, és ezek rendre azt adják meg, hogy a lovag, az íjász és a fogoly ébren van-e. A függvény True értéket ad vissza, ha a három szereplő állapota alapján a csoport kikémlelhető. Ellenkező esetben False értéket ad vissza:

knightIsAwake = False
archerIsAwake = True
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 vár, és ezek rendre azt adják meg, hogy az íjász és a fogoly ébren van-e. A függvény True értéket ad vissza, ha a két szereplő állapota alapján jelezni lehet a fogolynak. Ellenkező esetben False értéket ad vissza:

archerIsAwake = False
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 vár. Az első három paraméter rendre azt adja meg, hogy a lovag, az íjász és a fogoly ébren van-e. Az utolsó paraméter azt adja meg, hogy Annalyn kutyája ott van-e. A függvény True értéket ad vissza, ha a három szereplő állapota és Annalyn kutyájának jelenléte alapján kiszabadítható a fogoly. Ellenkező esetben False értéket ad vissza:

knightIsAwake = False
archerIsAwake = True
prisonerIsAwake = False
petDogIsPresent = False

canFreePrisoner knightIsAwake archerIsAwake prisonerIsAwake petDogIsPresent
    --> False

5. Számold ki, mennyi sebzést okozhat egy lopakodó támadás

Valósítsd meg a stealthAttackDamage függvényt, amely egy Boolean értéket vár, ami megadja, hogy észrevették-e Annalynt. A függvény 7-et ad vissza, ha észrevették, egyébként 12-t.

annalynIsDetected = True

stealthAttackDamage annalynIsDetected
    --> 7
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Elm 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) Elm nyelvet 28 fogalom110 feladat segítségével, valódi emberi mentorálással, mindez ingyen.