Номери дробовика - це послідовність із досить простим визначенням, але деякою цікавою структурою. Почніть з натуральних чисел:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...
Тепер візьміть усі числа за індексами, розділеними на 2 , згрупуйте їх у пари і поміняйте числами в кожній парі:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ...
^ ^ ^ ^ ^ ^ ^
<---> <---> <-----> <----
1, 4, 3, 2, 5, 8, 7, 6, 9, 12, 11, 10, 13, 16, ...
Тепер зробіть те ж саме з індексами, розділеними на 3 :
1, 4, 3, 2, 5, 8, 7, 6, 9, 12, 11, 10, 13, 16, ...
^ ^ ^ ^
<------> <--------->
1, 4, 8, 2, 5, 3, 7, 6, 10, 12, 11, 9, 13, 16, ...
А потім для 4 , 5 , 6 тощо:
1, 4, 8, 2, 5, 3, 7, 6, 10, 12, 11, 9, 13, 16, ...
1, 4, 8, 6, 5, 3, 7, 2, 10, 12, 11, 14, 13, 16, ...
1, 4, 8, 6, 12, 3, 7, 2, 10, 5, 11, 14, 13, 16, ...
1, 4, 8, 6, 12, 14, 7, 2, 10, 5, 11, 3, 13, 16, ...
...
Після k таких кроків будуть зафіксовані перші k + 1 числа. Таким чином, ми можемо визначити нескінченну послідовність чисел Shotgun як межу відпуску k до нескінченності. Перші 66 номерів:
1, 4, 8, 6, 12, 14, 16, 9, 18, 20, 24, 26, 28, 22, 39, 15, 36, 35, 40, 38, 57, 34, 48, 49, 51, 44,
46, 33, 60, 77, 64, 32, 75, 56, 81, 68, 76, 58, 100, 55, 84, 111, 88, 62, 125, 70, 96, 91, 98, 95,
134, 72, 108, 82, 141, 80, 140, 92, 120, 156, 124, 94, 121, 52, 152, 145, ...
Факт забави: Незважаючи на те, що отриманий лише перестановкою натуральних чисел, ця послідовність не містить ніяких простих чисел.
Змагання
Задавши ціле число n > 0, знайдіть номер nth Shotgun. Ви можете написати програму або функцію, взявши введення через STDIN (або найближчу альтернативу), аргумент командного рядка або аргумент функції і повернути вихідний результат або роздрукувати його в STDOUT (або найближчій альтернативі).
Це код гольфу, тому виграє найкоротше подання (у байтах).
Табло лідерів
Це отримує більше відповідей, ніж я думав, а також кілька людей, які змагаються однією мовою. Отже, тут є фрагмент стека для створення як звичайного табло, так і огляду переможців за мовою.
Щоб переконатися, що ваша відповідь відображається, будь ласка, почніть свою відповідь із заголовка, використовуючи наступний шаблон Markdown:
# Language Name, N bytes
де Nрозмір вашого подання. Якщо ви покращите свій рахунок, ви можете зберегти старі бали у заголовку, прокресливши їх. Наприклад:
# Ruby, <s>104</s> <s>101</s> 96 bytes
10, наприклад 21, 25і 30не з’являється, наприклад.
kітерації, kелемент елемента в масиві переноситься до 2kго-го положення і більше не буде торкатися до тих пір, поки 2kітерація, в цей час вона переноситься на 4kту позицію, ad infinitum. Прем'єр не переміщується, поки не настане його черга, так би мовити, тому всі прайми переміщаються вперед. Але ми можемо легко скласти список невинних жертв, просто надрукувавши перший елемент, який слід перенести під час ітерації 2 та кожної непарної ітерації. Список йде: 2, 3, 5, 7, 10, 11, 13, 21, 17, 19, 30, 23, 27, 25, 29, 31, 45, 42, 37, 54, 41, 43, 65, ...