Последовательность SUDSI ( су м, д ifference, ˙s WAP, я ncrement) представляет собой целое число , любопытная последовательность , которая , как представляется , обладает довольно хаотическим поведением. Это может быть сгенерировано следующим образом:
Пусть S бесконечный список натуральных чисел: 1 2 3 4 5 6 ...
. Пусть S я обозначаю один индексированный я й элемент S . Итак, изначально S 1 равно 1, S 2 равно 2 и т. Д. ( S 0 отсутствует ).
Начиная с S 1 и S 2 ...
- Подсчитайте их сумму:
sum = S1 + S2
- Вычислите их абсолютную разницу (чем больше, тем меньше):
diff = |S1 - S2|
Поменяйте местами два значения в S по индексам суммы и разности:
swap(Ssum, Sdiff)
Увеличьте показатели S, с которыми вы работаете. Поэтому в следующий раз вы будете вычислять сумму и разность S 2 и S 3 , а время после этого будет S 3 и S 4 и т. Д.
- Повторите этот процесс до бесконечности.
Вот первые несколько этапов S, как этот процесс применяется. Квадратные скобки []
окружают два значения, которые будут суммироваться и различаться.
Оригинал S :
[1 2] 3 4 5 6 7 8 9 10 11 12 ...
После того, как S 3 ( 3 = 1 + 2
) и S 1 ( 1 = |1 - 2|
) поменялись местами:
3 [2 1] 4 5 6 7 8 9 10 11 12 ...
После того, как S 3 и S 1 поменялись местами:
1 2 [3 4] 5 6 7 8 9 10 11 12 ...
После того, как S 7 и S 1 поменялись местами:
7 2 3 [4 5] 6 1 8 9 10 11 12 ...
После того, как S 9 и S 1 поменялись местами:
9 2 3 4 [5 6] 1 8 7 10 11 12 ...
После того, как S 11 и S 1 поменялись местами:
11 2 3 4 5 [6 1] 8 7 10 9 12 ...
После того, как S 7 и S 5 поменялись местами:
11 2 3 4 1 6 [5 8] 7 10 9 12 ...
и т.п.
Последовательность SUDSI определяется как последовательность первых элементов в каждом из этих списков. Итак, первые несколько терминов последовательности SUDSI 1 3 1 7 9 11 11
.
Вот первые 200 членов последовательности SUDSI (20 на строку):
1 3 1 7 9 11 11 11 15 15 19 19 19 19 19 19 19 19 19 19
19 19 19 19 19 19 19 19 57 59 59 59 59 59 59 59 59 59 77 79
81 83 85 87 89 91 91 91 91 91 91 91 91 91 91 91 91 91 115 115
121 123 125 127 127 127 127 127 137 139 141 143 145 147 147 147 147 147 147 147
147 147 147 147 167 167 167 167 167 167 167 167 167 167 167 167 167 167 167 167
167 167 167 167 209 211 211 211 211 211 221 223 223 223 223 223 223 223 223 223
223 223 243 243 243 243 243 243 257 259 261 263 263 263 263 263 263 263 263 263
263 263 263 263 263 263 263 263 263 263 263 263 263 263 263 263 263 263 263 263
263 263 325 327 329 331 331 331 331 331 331 331 331 331 349 351 351 351 351 351
361 363 363 363 363 363 363 363 363 363 363 363 363 363 363 363 363 363 363 363
Неясно (по крайней мере мне), как можно предсказать будущие условия. Можно только с уверенностью сказать, что эти термины всегда нечетные, неубывающие (после второго слагаемого) и что некоторые числа повторяются много раз.
Вызов
Напишите программу или функцию, которая принимает положительное целое число n и печатает или возвращает n- й член последовательности SUDSI. Например, если n равно 1, вывод равен 1
, если n равен 2, вывод равен 3
, если n равно 200, вывод равен 363
.
Возьмите ввод любым обычным способом (стандартная строка / командная строка / функция arg).
Самый короткий ответ в байтах побеждает.
(Этот сайт кодирует вещи в UTF-8, но вы можете использовать любую чертову существующую кодировку, какую захотите.)
Бонус Мати: (потенциально имеет право на награду)
- Расскажите мне больше о последовательности SUDSI. Каков базовый шаблон того, какие числа являются его частью и сколько их (и тому подобное)? (Кстати, я не смог найти SUDSI в OEIS .)