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

Annalyn beszivárgása

Tanulófeladat

Bevezetés

A Clojure-ben a Boolean értékeket a true vagy a false jelöli.

A predikátumfüggvények (vagyis a Boolean értéket visszaadó függvények) általában kérdőjellel (?) végződnek, de ez csak konvenció.

Az alapkönyvtár olyan logikai operátorokhoz is tartalmaz függvényeket, mint a not, az and és az or.

Utasítások

Ebben a feladatban egy új RPG-játék küldetéslogikáját valósítod meg, amelyet egy barátod fejleszt. 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 megkeresni és kimenteni a barátját, és a küldetésre akár a kutyáját is magával viheti.

Miután egy ideig követte a nyomokat, Annalyn 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 elgondolkodik, hogy az alábbi akciók közül melyiket hajthatja végre:

  • Gyors támadás: gyors támadást akkor lehet végrehajtani, ha a lovag alszik, mivel időbe telik, mire felveszi a páncélját, és ezalatt sebezhetővé válik.
  • Kémkedés: a csoport megfigyelhető, ha legalább az egyikük ébren van. Ellenkező esetben a kémkedés időpocsékolás.
  • A fogoly jelzése: a fogolynak madárhangokkal lehet jelezni, ha a fogoly ébren van, és az íjász alszik. Az íjászok kiképzést kaptak a madárjelek használatából, és elcsíphetik az üzenetet, ha ébren vannak.
  • A fogoly kiszabadítása: Annalyn megpróbálhat belopakodni a táborba, hogy kiszabadítsa a foglyot. Ez kockázatos, és csak kétféleképpen sikerülhet:
    • Ha Annalynnél ott van a kutya, akkor ki tudja szabadítani 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 Annalynnél nincs ott a kutya, akkor neki és a fogolynak nagyon óvatosnak kell lennie! Annalyn akkor szabadíthatja ki a foglyot, ha a fogoly ébren van, a lovag pedig alszik, és az íjász is. Ha viszont a fogoly alszik, nem lehet kimenteni, mert Annalyn hirtelen felbukkanása megijesztené a foglyot, aki aztán felébresztené a lovagot és az íjászt.

Négy részfeladat vár rád: meg kell valósítanod a logikát annak meghatározásához, hogy a fenti akciók végrehajthatók-e, az erdőben tartózkodó három szereplő állapota, valamint Annalyn kutyájának jelenléte alapján.

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

Valósítsd meg a can-fast-attack? függvényt, amely egy Boolean értéket vár, jelezve, 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:

(def knight-awake? true)

(can-fast-attack? knight-awake?)
;;=> false

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

Valósítsd meg a can-spy? függvényt, amely három Boolean értéket vár, 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 megfigyelhető a csoport. Ellenkező esetben false-t ad vissza:

(def knight-awake? false)
(def archer-awake? true)
(def prisoner-awake? false)

(can-spy? knight-awake? archer-awake? prisoner-awake?)
;;=> true

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

Valósítsd meg a can-signal-prisoner? függvényt, amely két Boolean értéket vár, 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. Ellenkező esetben false-t ad vissza:

(def archer-awake? false)
(def prisoner-awake? true)

(can-signal-prisoner? archer-awake? prisoner-awake?)
;;=> true

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

Valósítsd meg a can-free-prisoner? 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:

(def knight-awake? false)
(def archer-awake? true)
(def prisoner-awake? false)
(def dog-present? false)

(can-free-prisoner? knight-awake? archer-awake? prisoner-awake? dog-present?)
;;=> false
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Clojure 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) Clojure nyelvet 12 fogalom105 feladat segítségével, valódi emberi mentorálással, mindez ingyen.