Вступление
Конечно, у нас много проблем с последовательностью , так что вот еще одна.
Последовательность Кимберлинга ( 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- й элемент и помещаем его в нашу последовательность. Это вторая итерация, поэтому мы отбрасываем второй пункт. Последовательность становится: 1, 3
. Для нашей следующей итерации мы будем перетасовывать текущую итерацию с шаблоном выше. Мы берем первый неиспользованный предмет справа от i- го предмета. Это случается 4
. Мы добавим это к нашей новой итерации:
4
Теперь мы возьмем первый неиспользованный предмет слева от i- го предмета. Это 2
. Мы добавим это к нашей новой итерации:
4 2
Поскольку слева от i- го элемента не осталось элементов, мы просто добавим остальную часть последовательности к новой итерации:
4 2 [5] 6 7 8 9 10 11 ...
Это наша третья итерация, поэтому мы отбросим третий пункт, который есть 5
. Это третий пункт в нашей последовательности:
1, 3, 5
Чтобы получить следующую итерацию, просто повторите процесс. Я сделал подарок, если не ясно:
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
Примечание: запятые в выводе не обязательны. Вы можете, например, использовать переводы строки, выводить список и т. Д.