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