Понеділок Міні-Гольф: Серія коротких викликів з гольф-кодом , що публікуються (сподіваємось!) Кожного понеділка.
Фібоначчі-подібні послідовності отримують , використовуючи той же спосіб, відомої послідовності Фібоначчі ; тобто кожне число F (n) знаходимо шляхом додавання попередніх двох чисел у послідовності ( F (n) = F (n-1) + F (n-2) ) або відніманням наступних двох чисел ( F (n) = F (n + 2) - F (n + 1) ). Основна відмінність полягає в тому, що ці послідовності можуть починатися з будь-яких двох чисел. Нульова індексація цих послідовностей є спірною, але наразі ми будемо використовувати це правило:
- 0 число в послідовності, подібної до Фібоначчі, - це останнє число, яке менше попереднього числа.
Як приклад, послідовність Фібоначчі може бути записана як 1, 0, 1, 1, 2, 3, 5...
, тому 0 число в послідовності є одиноким 0
.
Виклик
Мета завдання - написати програму або функцію, яка бере три цілі числа, у будь-якому форматі:
- А і В , два числа, з яких можна почати генерувати послідовність.
- N - довжина отриманої послідовності для виведення.
І виводить перші N числа послідовності, починаючи з 0-го.
Деталі
- A , B і N можуть прийматися в будь-якому порядку та форматі, якщо вони видимо розділені. Якщо ви використовуєте інше замовлення / формат, вкажіть, що це таке.
- Ви можете припустити, що A , B і N завжди є натуральними числами.
- Можна припустити, що N не більше 100, а отримана послідовність не буде містити
x >= 2^31
. - Якщо A більший за B , то B - 0 число в послідовності.
- Вихідні дані повинні бути розділені пробілами, комами та / або новими рядками.
- Доступний пробіл або новий рядок, але не кома.
Тестові кейси
Приклад 1:
8 13 10
Працюючи назад, 8 13
поки не знайдемо число, більше, ніж попереднє, ми отримаємо 13 8 5 3 2 1 1 0 1
. Таким чином, 0
є 0 числом у цій послідовності. Просуваючись до цього, ми роздруковуємо 0
та наступних 9 членів:
0 1 1 2 3 5 8 13 21 34
Приклад 2:
23 37 5
Знову працюючи назад, щоб знайти 0 число, ми знаходимо 37 23 14 9 5 4 1 3
. Цього разу номер 0 1
, тому ми роздруковуємо його разом з наступними 4 членами:
1 4 5 9 14
Приклад 3:
4 3 8
З цим нам не потрібно працювати назад, щоб знайти 0 число, оскільки 3
воно менше 4
:
3 7 10 17 27 44 71 115
Приклад 4:
29 47 11
Результат:
1 3 4 7 11 18 29 47 76 123 199
Оцінка балів
Це код-гольф , тому найкоротший дійсний код у байтах виграє. Tiebreaker переходить до раніше опублікованих подань. Переможець буде обраний наступного понеділка, 28 вересня. Удачі!
Редагувати: Вітаю переможця @Jakube, використовуючи Pyth за дивовижні 23 байти!
[8, 13, 10]
)?