Kurzusok
/
Elixir
Elixir
/
Feladatok
/
Madárszámlálás
Madárszámlálás

Madárszámlálás

Tanulófeladat

Bevezetés

Rekurzió

A rekurzív függvények olyan függvények, amelyek meghívják önmagukat.

Egy rekurzív függvénynek legalább egy alapesetre és legalább egy rekurzív esetre van szüksége.

Az alapeset úgy ad vissza egy értéket, hogy nem hívja meg újra a függvényt. A rekurzív eset újra meghívja a függvényt, és közben úgy módosítja a bemenetet, hogy az előbb-utóbb megfeleljen az alapesetnek.

Nagyon gyakran külön függvényklózban írjuk meg az egyes eseteket.

# base case
def count([]), do: 0

# recursive case
def count([_head | tail]), do: 1 + count(tail)

Utasítások

Szenvedélyes madármegfigyelő vagy, aki számon tartja, hány madár látogatta meg a kertedet egy-egy napon.

Úgy döntöttél, hogy új szintre emeled a madármegfigyelést, és néhány eszközt készítesz, amelyek segítenek nyomon követni és feldolgozni az adatokat.

Úgy döntöttél, hogy az adatokat egész számok listájaként tárolod. A lista első száma a ma meglátogatott madarak száma, a második a tegnapi, és így tovább.

1. Ellenőrizd, hány madár látogatott meg ma

Valósítsd meg a BirdCount.today/1 függvényt. Bemenetként a napi madárszámok listáját kapja, és adja vissza a mai számot. Ha a lista üres, nil-t adjon vissza.

BirdCount.today([2, 5, 1])
# => 2

2. Növeld a mai számot

Valósítsd meg a BirdCount.increment_day_count/1 függvényt. Bemenetként a napi madárszámok listáját kapja, és növelje meg a mai számot 1-gyel. Ha a lista üres, [1]-et adjon vissza.

BirdCount.increment_day_count([4, 0, 2])
# => [5, 0, 2]

3. Ellenőrizd, volt-e olyan nap, amikor egyetlen madár sem látogatott

Valósítsd meg a BirdCount.has_day_without_birds?/1 függvényt. Bemenetként a napi madárszámok listáját kapja. Adjon vissza true-t, ha legalább egy olyan nap volt, amikor egyetlen madár sem látogatta meg a kertet, egyébként pedig false-t.

BirdCount.has_day_without_birds?([2, 0, 4])
# => true

BirdCount.has_day_without_birds?([3, 8, 1, 5])
# => false

4. Számítsd ki a látogató madarak összes számát

Valósítsd meg a BirdCount.total/1 függvényt. Bemenetként a napi madárszámok listáját kapja, és adja vissza, összesen hány madár látogatta meg a kertedet, amióta elkezdted gyűjteni az adatokat.

BirdCount.total([4, 0, 9, 0, 5])
# => 18

5. Számítsd ki a forgalmas napok számát

Néhány nap forgalmasabb, mint a többi. Forgalmas napnak az számít, amikor legalább öt madár látogatta meg a kertedet.

Valósítsd meg a BirdCount.busy_days/1 függvényt. Bemenetként a napi madárszámok listáját kapja, és adja vissza a forgalmas napok számát.

BirdCount.busy_days([4, 5, 0, 0, 6])
# => 2
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Elixir Exercism

Készen állsz elkezdeni a(z) Madárszámlálás feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Elixir nyelvet 58 fogalom168 feladat segítségével, valódi emberi mentorálással, mindez ingyen.