Вступ
Звичайно, у нас багато проблем із послідовністю , тож ось ще одна.
Послідовність Кімберлінга ( A007063 ) має такий вигляд :
1, 3, 5, 4, 10, 7, 15, 8, 20, 9, 18, 24, 31, 14, 28, 22, ...
Це відбувається шляхом переміщення нормальної ітерації:
[1] 2 3 4 5 6 7 8
Перший член послідовності - 1
. Після цього ми переставляємо послідовність, поки не будуть використані всі терміни зліва. Перемішування має малюнок right - left - right - left - ...
. Оскільки немає лівих термінів зліва 1
, перетасування не відбувається. Ми отримуємо наступне:
2 [3] 4 5 6 7 8 9
На i- й ітерації ми відкидаємо i- й елемент і ставимо це в нашій послідовності. Це 2-а ітерація, тому ми відкидаємо другий пункт. Послідовність стає: 1, 3
. Для нашої наступної ітерації ми перетасуємо поточну ітерацію за вищевказаним зразком. Ми беремо перший невикористаний предмет праворуч від i- го предмета. Це буває 4
. Ми додамо це до нашої нової ітерації:
4
Тепер ми візьмемо перший невикористаний елемент ліворуч від i- го елемента. Це 2
. Ми додамо це до нашої нової ітерації:
4 2
Оскільки зліва від i- го елемента не залишилося елементів, ми просто додамо решту послідовності до нової ітерації:
4 2 [5] 6 7 8 9 10 11 ...
Це наша третя ітерація, тому ми відкинемо цю 3-й елемент, який є 5
. Це третій пункт у нашій послідовності:
1, 3, 5
Щоб отримати наступну ітерацію, просто повторіть процес. Я зробив gif, якщо це не ясно:
Gif у мене зайняв більше часу, ніж написання фактичної публікації
Завдання
- Враховуючи невід'ємне ціле число n , виведіть перше n доданків послідовності
- Ви можете надати функцію або програму
- Це код-гольф , тому подання з найменшою кількістю байтів виграє!
Тестові приклади:
Input: 4
Output: 1, 3, 5, 4
Input: 8
Output: 1, 3, 5, 4, 10, 7, 15, 8
Input: 15
Output: 1, 3, 5, 4, 10, 7, 15, 8, 20, 9, 18, 24, 31, 14, 28
Примітка: Коси у висновку не потрібні. Наприклад, ви можете використовувати нові рядки або виводити список тощо.