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.
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:
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.
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
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
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
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
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.