Заголовок складається з "Число індексу послідовності не".
Виклик:
Враховуючи ціле число, n
яке є >= 0
, виведіть n
'-те число наступної послідовності.
Ось перші 50 пунктів, над ним (0-індексований) індекс:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
1 0 3 2 5 4 7 6 9 8 22 20 30 24 23 26 25 28 27 32 11 33 10 14 13 16 15 18 17 31 12 29 19 21 50 40 41 42 44 45 35 36 37 51 38 39 52 53 55 56 34
Як працює ця послідовність?
Число в індексі n
повинно бути першим для того, що не має ніяких спільних цифр n
і ще не відбулося для попередніх індексів. Отже, коли ми дивимось на звичайну послідовність, як це 0-60
:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
Ми визначаємо такі n
значення, як:
0
: Перше число (0
) містить ту саму цифру, тому ми шукаємо наступну (1
), яка не містить однакової цифри. Тожn=0
виходи1
.1
: Перше число (0
) не містить однакової цифри, томуn=1
виводиться0
.2
: Ми вже зустрічалися з0
і1
, і наступна цифра (2
) містить ту саму цифру, тому ми шукаємо наступну (3
), яка не містить тієї ж цифри. Тожn=2
виходи3
.- ...
10
: Ми вже стикалися0-9
, тож наступний рядок - це10
.10-19
містить відповідну цифру1
,20
містить відповідну цифру0
,21
містить відповідну цифру1
знову,22
є дійсною, томуn=10
виводить22
.- тощо.
Правила виклику:
- Якщо ваша мова є 1-індексованою (або ви вирішите), вам дозволяється починати послідовність з
3 2 5 4 7 ...
(пропускаючи1
вn=0
і0
вn=1
). - Мінімальний найбільший індекс, який ви повинні підтримувати, - це
25,000
. ПРИМІТКА: Послідовність зупиняється на індексі1,023,456,788
, оскільки наступний індекс у рядку містить усі 10 цифр. - Вам також дозволено виводити / повертати масив / список всієї послідовності до та включаючи індекс,
n
якщо ви цього хочете.
Загальні правила:
- Це код-гольф , тому найкоротша відповідь у байтах виграє.
Не дозволяйте мовам коду-гольфу відштовхувати вас від публікації відповідей з не кодовими гольф-мовами. Спробуйте придумати якомога коротшу відповідь на "будь-яку" мову програмування. - Стандартні правила застосовуються до вашої відповіді, тому вам дозволяється використовувати STDIN / STDOUT, функції / метод із відповідними параметрами та повним програмами типу "повернення". Твій дзвінок.
- Лазівки за замовчуванням заборонені.
- Якщо можливо, додайте посилання з тестом для вашого коду.
- Також, будь ласка, додайте пояснення, якщо це необхідно.
Тестові приклади:
Ця послідовність фактично створювала пари щодо індексу та виходів. Якщо індексні n
виходи o
, індексні o
виходи n
. Таким чином, ви можете ввести або ліворуч, або праворуч, а вихід буде іншою стороною:
0 <-> 1 (this test case is optional)
2 <-> 3
10 <-> 22
12 <-> 30
34 <-> 50
89 <-> 100
111 <-> 200
112 <-> 300
199 <-> 322
2231 <-> 4456
9605 <-> 11118
19235 <-> 46000
23451 <-> 60668
25000 <-> 13674
Ось клейстер з перших 25001 тестових випадків, якщо ви хочете спробувати інші.