Треки
/
Elixir
Elixir
/
Вправи
/
Числа Лукаса
Числа Лукаса

Числа Лукаса

Навчальна вправа

Вступ

Потоки

Усі функції в модулі Enum жадібні. Коли ми виконуємо кілька операцій над перелічуваними значеннями за допомогою модуля Enum, кожна операція створює проміжний результат.

Модуль Stream - це лінива альтернатива жадібному модулю Enum. Він пропонує багато тих самих функцій, що й Enum, але замість створення проміжних результатів будує низку обчислень, які виконуються лише тоді, коли потік передають до функції з модуля Enum.

Потоки реалізують протокол Enumerable і є компонованими: ми можемо обʼєднувати їх у ланцюжки, щоб створювати складнішу функціональність.

Вказівки

Ми великі шанувальники YouTube-каналу Numberphile й щойно побачили круте відео про послідовність чисел Лукаса. Ми хочемо створити цю послідовність за допомогою Elixir.

Розробляючи функцію, хочемо скористатися лінивим обчисленням, щоб генерувати скільки завгодно чисел, але лише за потреби. Тож вирішуємо використати потік.

1. Перехопіть неправильні аргументи

Додайте захисну клаузу, щоб виникала помилка, якщо для генерації послідовності використано неціле число або ціле число, менше ніж 1. Якщо зробити це першим кроком, це запобіжить помилкам нескінченної рекурсії на наступних кроках.

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

2. Згенеруйте базові випадки

Ми знаємо, що послідовність має два початкові числа, які не підкоряються тому самому правилу. Напишіть дві клаузи базових випадків, щоб повернути ці числа:

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

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

3. Створіть узагальнений випадок

Для будь-якої послідовності довшої за 2 ми знаємо, що треба додати два попередні числа, щоб отримати наступне число, і так далі. Напишіть узагальнений випадок.

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

LucasNumbers.generate(4)
# => [2, 1, 3, 4]
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Elixir Exercism

Час розпочати Числа Лукаса?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Elixir, а також 58 концепцій168 вправ та справжнє наставництво від людей, і все це безкоштовно.