Kurzusok
/
Clojure
Clojure
/
Feladatok
/
Madárfigyelő
Madárfigyelő

Madárfigyelő

Tanulófeladat

Bevezetés

A Clojure-ban a vector egy szekvenciális, indexelt, megváltoztathatatlan gyűjtemény, amely nulla vagy több értéket tartalmaz. Ez azt jelenti, hogy egy vektor létrehozása után az már nem módosítható. A vektorokkal dolgozó függvények új vektort adnak vissza, az eredeti vektor pedig változatlan marad. A vektorban lévő értékek heterogén típusúak lehetnek. A vektorokat a következőképpen definiálhatod:

(def empty [])
(def single-value [5])
(def single-value-alternative (vector 5))
(def three-values [1 "a" "b"])

Az elemeket index segítségével kérheted le a vektorból. A Clojure vektorai nullaalapúak, vagyis az első elem indexe mindig nulla:

(def numbers [2 3 5])
;; Read value from vector
(get numbers 2)
;;=> 5
;; Update value in vector
(assoc numbers 2 9)
;;=> [2 3 9]

Az eredeti vektor változatlan marad:

numbers
;;=> [2 3 5]

Ahhoz, hogy megjegyezd a frissített értéket, tovább kell adnod, vagy el kell mentened egy var-ban:

(def updated-numbers
  (assoc numbers 2 9))
(get updated-numbers 2)
;;=> 9

Utasítások

Szenvedélyes madárfigyelő vagy, aki számon tartja, hány madár járt a kertedben az elmúlt hét napban.

Hat részfeladatod van, és mindegyik azzal foglalkozik, hány madár látogatott el a kertedbe.

1. Ellenőrizd, mennyi volt a számuk az előző héten

Az összehasonlítás kedvéért mindig magadnál tartod az előző heti számok másolatát, ezek pedig a következők voltak: 0, 2, 5, 3, 7, 8 és 4. Hozz létre egy vektort, amely az előző heti számokat tartalmazza:

last-week
;;=> [0 2 5 3 7 8 4]

2. Ellenőrizd, hány madár járt ma a kertedben

Valósítsd meg a today függvényt, amely visszaadja, hány madár járt ma a kertedben. A madárszámok napok szerint vannak sorrendben: az első elem a legrégebbi nap száma, az utolsó pedig a mai napé.

(def birds-per-day [2 5 0 7 4 1])
(today birds-per-day)
;;=> 1

3. Növeld meg a mai nap számát

Valósítsd meg az inc-bird függvényt, amely megnöveli a mai nap számát:

(inc-bird birds-per-day)
;;=> [2 5 0 7 4 2]

4. Ellenőrizd, volt-e olyan nap, amikor egyetlen madár sem járt itt

Valósítsd meg a day-without-birds? predikátumfüggvényt, amely true-t ad vissza, ha volt olyan nap, amikor egyetlen madár sem járt a kertben; egyébként false-t:

(day-without-birds? birds-per-day)
;;=> true

5. Számold ki a látogató madarak számát az első megadott számú napra

Valósítsd meg az n-days-count függvényt, amely visszaadja, hány madár járt a kertedben a hét kezdetétől számítva, de a számolást korlátozd a hét kezdetétől megadott számú napra.

(n-days-count birds-per-day 4)
;;=> 14

6. Számold ki a forgalmas napok számát

Egyes napok forgalmasabbak, mint a többi. Forgalmas nap az, amikor öt vagy több madár járt a kertedben. Valósítsd meg a busy-days függvényt, amely visszaadja a forgalmas napok számát:

(busy-days birds-per-day)
;;=> 2

7. Ellenőrizd, páratlan hét-e

Az elmúlt évben rájöttél, hogy bizonyos hetek ugyanazt a páratlan mintát követik, amelyben a látogató madarak száma váltakozva egy és nulla. Valósítsd meg az odd-week? függvényt, amely true-t ad vissza, ha az adott hét madárszám-mintája megegyezik a páratlan mintával:

(odd-week? [1 0 1 0 1 0 1])
;;=> true
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Clojure Exercism

Készen állsz elkezdeni a(z) Madárfigyelő 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.