Послідовність SUDSI ( su m, d ifference, s wap, i 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
.
Візьміть введення будь-яким звичним способом (stdin / командний рядок / функція arg).
Виграє найкоротша відповідь у байтах .
(Цей сайт кодує речі в UTF-8, але ви можете використовувати будь-яке вже кодування, яке ви хочете.)
Бонус Mathy: (потенційно придатний для винагороди)
- Розкажіть мені більше про послідовність SUDSI. Яка основна закономірність того, які числа є частиною цього, і скільки їх є (і подібні речі)? ( До речі, я не зміг знайти SUDSI на OEIS .)