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

Annalyn beszivárgása

Tanulófeladat

Bevezetés

A Go-ban a Boolean értékeket az előre deklarált Boolean típus, a bool képviseli, amelynek értéke true vagy false lehet. Ez egy definiált típus.

var closed bool    // boolean variable 'closed' implicitly initialized with 'false'
speeding := true   // boolean variable 'speeding' initialized with 'true'
hasError := false  // boolean variable 'hasError' initialized with 'false' 

A Go három logikai operátort támogat, amelyekkel a kifejezéseket Boolean értékekre lehet kiértékelni, és true vagy false értéket adnak vissza.

Operátor Mit jelent
&& (és) Akkor igaz, ha mindkét állítás igaz.
|| (vagy) Akkor igaz, ha legalább az egyik állítás igaz.
! (nem) Csak akkor igaz, ha az állítás hamis.

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 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átalál 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 mérlegeli, hogy az alábbi cselekvések közül melyiket hajthatja végre:

  • Gyors támadás: egy gyors támadás akkor hajtható végre, ha a lovag alszik, mivel időbe telik, míg felveszi a páncélját, így sebezhető lesz.
  • Kémkedés: a csoportot akkor lehet megfigyelni, ha legalább az egyikü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, az íjász pedig alszik, mivel az íjászokat madárjelekre képezték ki, így elkaphatnák az üzenetet.
  • A 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, az íjász pedig nem ér rá felkészülni, mielőtt Annalyn és a fogoly elmenekül.
    • Ha Annalyn 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 egyaránt alszik. Ha viszont a fogoly alszik, nem lehet kiszabadítani: Annalyn hirtelen felbukkanása megijesztené a foglyot, aki felébresztené a lovagot és az íjászt.

Négy részfeladatod van: megvalósítani a logikát, amely meghatározza, hogy a fenti cselekvések elvégezhetők-e az erdőben talált három szereplő állapota, valamint annak alapján, hogy Annalyn kutyája jelen van-e vagy sem.

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

Definiáld a CanFastAttack() függvényt, amely egy boolean értéket vár, 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. Ellenkező esetben false-t ad vissza:

var knightIsAwake = true
fmt.Println(CanFastAttack(knightIsAwake))
// Output: false

2. Ellenőrizd, hogy megfigyelhető-e a csoport

Definiáld a CanSpy() függvényt, amely három boolean értéket vár, amelyek 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 a csoport megfigyelhető. Ellenkező esetben false-t ad vissza:

var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
fmt.Println(CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake))
// Output: true

3. Ellenőrizd, hogy küldhető-e jelzés a fogolynak

Definiáld a CanSignalPrisoner() függvényt, amely két boolean értéket vár, amelyek 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 küldhető jelzés a fogolynak. Ellenkező esetben false-t ad vissza:

var archerIsAwake = false
var prisonerIsAwake = true
fmt.Println(CanSignalPrisoner(archerIsAwake, prisonerIsAwake))
// Output: true

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

Definiáld a CanFreePrisoner() függvényt, amely négy boolean értéket vár. 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 jelen 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. Ellenkező esetben false-t ad vissza:

var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
var petDogIsPresent = false
fmt.Println(CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent))
// Output: false
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Go 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) Go nyelvet 34 fogalom165 feladat segítségével, valódi emberi mentorálással, mindez ingyen.