Kurzusok
/
Elixir
Elixir
/
Feladatok
/
Lucas-számok
Lucas-számok

Lucas-számok

Tanulófeladat

Bevezetés

Streamek

Az Enum modul összes függvénye mohó. Amikor az Enum modullal több műveletet végzel el felsorolható adatokon, minden művelet egy köztes eredményt hoz létre.

A Stream modul a mohó Enum modul lusta alternatívája. Sok ugyanolyan függvényt kínál, mint az Enum, de a köztes eredmények létrehozása helyett olyan számítások sorozatát építi fel, amelyek csak akkor hajtódnak végre, amikor a streamet átadod az Enum modul egyik függvényének.

A streamek megvalósítják az Enumerable protokollt, és összeilleszthetők, vagyis egymás után fűzheted őket, hogy összetettebb funkcionalitást hozz létre.

Utasítások

Nagy rajongója vagy a Numberphile Youtube-csatornának, és épp most láttál egy remek videót a Lucas Number Sequence-ről. Ezt a sorozatot szeretnéd Elixirben létrehozni.

A függvényed tervezése közben szeretnéd kihasználni a lusta kiértékelést, hogy annyi számot generálhass, amennyit csak akarsz, de csak akkor, ha tényleg szükséged van rájuk. Ezért úgy döntesz, hogy streamet használsz.

1. Szűrd ki a hibás argumentumokat

Adj hozzá egy guard klauzulát, amely hibát dob, ha nem egész számmal vagy 1-nél kisebb egésszel próbálod generálni a sorozatot. Ha ezt már az első lépésben megteszed, elkerülöd a végtelen rekurzióból eredő hibákat a későbbi lépésekben.

LucasNumbers.generate("Hello World")
# => ** (ArgumentError) count must be specified as an integer >= 1

2. Generáld az alapeseteket

Tudod, hogy a sorozatnak két kezdő száma van, amelyek nem ugyanazt a szabályt követik. Írj két alapeset-klauzulát, amelyek visszaadják ezeket a számokat:

LucasNumbers.generate(1)
# => [2]

LucasNumbers.generate(2)
# => [2, 1]

3. Hozd létre az általános esetet

Ha a sorozat hosszabb 2-nél, akkor tudod, hogy a következő számhoz az előző kettőt kell összeadnod, és így tovább. Írd meg az általános esetet.

LucasNumbers.generate(3)
# => [2, 1, 3]

LucasNumbers.generate(4)
# => [2, 1, 3, 4]
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Elixir Exercism

Készen állsz elkezdeni a(z) Lucas-számok 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.