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

Madárszámlálás

Tanulófeladat

Bevezetés

Tömbök

A Rubyban a tömbök rendezett, egész számokkal indexelt gyűjtemények, amelyek bármilyen objektumot tartalmazhatnak. A tömbök indexelése 0-tól indul. A negatív index a tömb végétől számítva értendő. A -1 index például az utolsó elemre mutat, a -2 az utolsó előttire, és így tovább.

Tömbök létrehozása

A tömböket általában a [] jelöléssel hozzuk létre. Bármilyen típusú objektumot tartalmazhatnak.

array = [1, "two", 3.0]

Elemekre hivatkozás

A tömb elemeit az indexeik alapján kérhetjük le a #[] metódussal. Ez visszaadja az adott indexű elemet, vagy egy altömböt ad vissza, amely a kezdőindexnél kezdődik és a megadott hosszon át tart. A negatív indexek a tömb végétől visszafelé számolnak.

a = [ "a", "b", "c", "d", "e" ]

a[2]       #=> "c"
a[6]       #=> nil
a[1, 3]    #=> [ "b", "c", "d" ]

a[-1]      #=> "e"
a[-2]      #=> "d"
a[-3, 2]   #=> ["c", "d"]

Segédmetódusok

A tömbökön sok hasznos segédmetódus érhető el. Íme néhány a gyakoribbak közül:

fibonacci = [0, 1, 1, 2, 3, 5, 8, 13]

fibonacci.size      #=> 8
fibonacci.sum       #=> 33
fibonacci.reverse   #=> [13, 8, 5, 3, 2, 1, 1, 0]

Felsorolás

Ahelyett, hogy ciklusokkal iterálnánk végig a gyűjteményeken, a Rubyban felsorolást használunk.

A felsorolás során végiglépkedünk egy gyűjteményen (ebben az esetben egy tömbön), és valamilyen műveletet hajtunk végre minden objektumon. A felsorolás kulcsfontosságú fogalom a Rubyban, és olyan dolgokra használjuk, mint a rendezés, csoportosítás, leképezés, redukálás és még sok más.

Egy felsorolás, amely kiírja a tömb minden szavát, így néz ki:

words = ["the", "cat", "sat"]
words.each do |word|
  puts word
end

# Output:
# the
# cat
# sat

Ebben a példában a .each metódust hívtuk meg a tömbünkön, és átadtunk neki egy blokkot, amely egy paramétert (word) vesz át, és kiírja azt.

A blokkokat sokkal részletesebben is megvizsgáljuk majd később a kurzus során, egyelőre azonban gondolj rájuk úgy, mint névtelen függvényekre, amelyek nulla vagy több argumentumot vehetnek át. A do...end szintaxissal (fent) vagy a {} szintaxissal (lent) definiálhatók.

Íme néhány további példa olyan tömbmetódusokra, amelyek blokkokat használnak:

fibonacci = [0, 1, 1, 2, 3, 5, 8, 13]

fibonacci.count  { |number| number == 1 }   #=> 2
fibonacci.any?   { |number| number == 6 }   #=> false
fibonacci.select { |number| number.odd? }   #=> [1, 1, 3, 5, 13]
fibonacci.all?   { |number| number < 20 }   #=> true
fibonacci.map    { |number| number * 2  }   #=> [0, 2, 2, 4, 6, 10, 16, 26]

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.

Öt részfeladat vár rád, és mindegyik azzal foglalkozik, hány madár járt a kertedben.

1. Nézd meg, mennyi volt a madárszám a múlt héten

Az összehasonlítás kedvéért mindig magadnál tartod a múlt heti madárszámok másolatát, ezek pedig a következők voltak: 0, 2, 5, 3, 7, 8 és 4. Valósítsd meg a BirdCount.last_week metódust, amely visszaadja a múlt heti madárszámokat:

BirdCount.last_week
# => [0, 2, 5, 3, 7, 8, 4]

2. Nézd meg, hány madár járt nálad tegnap

Valósítsd meg a BirdCount#yesterday metódust, amely visszaadja, hány madár járt a kertedben tegnap. A madárszámok napok szerint vannak rendezve: az első elem a legrégebbi nap száma, az utolsó pedig a mai napé.

birds_per_day = [2, 5, 0, 7, 4, 1]
bird_count = BirdCount.new(birds_per_day)
bird_count.yesterday
# => 4

3. Számold ki, összesen hány madár járt nálad

Valósítsd meg a BirdCount#total metódust, amely visszaadja, hogy összesen hány madár járt a kertedben:

birds_per_day = [2, 5, 0, 7, 4, 1]
bird_count = BirdCount.new(birds_per_day)
bird_count.total
# => 19

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

Néhány nap forgalmasabb, mint a többi. Forgalmas nap az, amikor öt vagy több madár járt a kertedben. Valósítsd meg a BirdCount#busy_days metódust, amely visszaadja a forgalmas napok számát:

birds_per_day = [2, 5, 0, 7, 4, 1]
bird_count = BirdCount.new(birds_per_day)
bird_count.busy_days
# => 2

5. Nézd meg, volt-e olyan nap, amikor egyetlen madár sem járt nálad

Valósítsd meg a BirdCount#day_without_birds? metódust, amely true értéket ad vissza, ha volt olyan nap, amikor nulla madár járt a kertedben; egyébként pedig false értéket ad vissza:

birds_per_day = [2, 5, 0, 7, 4, 1]
bird_count = BirdCount.new(birds_per_day)
bird_count.day_without_birds?
# => true
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Ruby 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) Ruby nyelvet 21 fogalom121 feladat segítségével, valódi emberi mentorálással, mindez ingyen.