Послідовність Штерна-Брокота - це послідовність фібоннаці, яка може бути побудована наступним чином:
- Ініціалізуйте послідовність з
s(1) = s(2) = 1 - Встановити лічильник
n = 1 - Додайте
s(n) + s(n+1)до послідовності - Додайте
s(n+1)до послідовності - Зростання
n, поверніться до кроку 3
Це еквівалентно:
Серед інших властивостей послідовність Штерна-Брокота може бути використана для отримання кожного можливого додатного раціонального числа. Кожне раціональне число генерується рівно один раз, і воно завжди з’явиться у найпростіших його словах; наприклад, 1/3є четвертим раціональне число в послідовності, але еквівалентні числа 2/6, і 3/9так далі не будуть з'являтися на всіх.
Ми можемо визначити n-е раціональне число як r(n) = s(n) / s(n+1), де s(n)- n-е число Штерна-Брокота, як описано вище.
Ваше завдання полягає в тому, щоб написати програму або функцію, яка виведе n-е раціональне число, сформоване за допомогою послідовності Штерна-Брокота.
- Алгоритми, описані вище, є 1-індексованими; якщо ваш запис 0-індексований, будь ласка, вкажіть свою відповідь
- Описані алгоритми призначені лише для ілюстративних цілей, вихід може бути отриманий будь-яким способом (за винятком жорсткого кодування)
- Вхід може здійснюватися через STDIN, параметри функції або будь-який інший розумний механізм введення
- Ouptut може бути STDOUT, консоль, функція повернення значення або будь-який інший розумний вихідний потік
- Вихід повинен бути у вигляді рядка у формі
a/b, деaіbє відповідними записами у послідовності Штерна-Брокота. Оцінка частки до виходу продукції не допустима. Наприклад, для введення12, вихід повинен бути2/5, а не0.4. - Стандартні лазівки заборонені
Це код-гольф , тому найкоротша відповідь у байтах виграє.
Тестові справи
Приклади тестів тут є 1-індексованими.
n r(n)
-- ------
1 1/1
2 1/2
3 2/1
4 1/3
5 3/2
6 2/3
7 3/1
8 1/4
9 4/3
10 3/5
11 5/2
12 2/5
13 5/3
14 3/4
15 4/1
16 1/5
17 5/4
18 4/7
19 7/3
20 3/8
50 7/12
100 7/19
1000 11/39
Запис OEIS: A002487
Відмінне числофільм, що обговорює послідовність: Нескінченні дроби
True/2не є дійсною фракцією (що стосується мене). З іншого боку, Trueце не завжди 1- деякі мови використовують -1замість цього, щоб уникнути можливих помилок при застосуванні побітових операторів. [цитування потрібно]
Trueеквівалентно 1і True/2було б 1/2.

Trues замість1s?