Вступление
В странном мире целых чисел делители подобны активам, и они используют, чтобы называть «богатыми» числа, имеющие больше делителей, чем их обращение, в то время как они называют «бедными» те, у которых меньше делителей, чем их обращение.
Например, число имеет пять делителей: , а его обращение - только четыре: .
Таким образом, называется богатым числом, а - бедным числом.
1042
Учитывая это определение, мы можем создать следующие две целочисленные последовательности богатых и бедных чисел:
(here we list the first 25 elements of the sequences)
Index | Poor | Rich
-------|------|-------
1 | 19 | 10
2 | 21 | 12
3 | 23 | 14
4 | 25 | 16
5 | 27 | 18
6 | 29 | 20
7 | 41 | 28
8 | 43 | 30
9 | 45 | 32
10 | 46 | 34
11 | 47 | 35
12 | 48 | 36
13 | 49 | 38
14 | 53 | 40
15 | 57 | 50
16 | 59 | 52
17 | 61 | 54
18 | 63 | 56
19 | 65 | 60
20 | 67 | 64
21 | 69 | 68
22 | 81 | 70
23 | 82 | 72
24 | 83 | 74
25 | 86 | 75
... | ... | ...
Примечания :
- под «обращением» числа мы подразумеваем его цифровую реверсию , то есть перестановку цифр в базе-10. Это означает , что номера , оканчивающиеся с одним или несколькими нулями будут иметь «короткий» разворот: например, реверсирование
1900
является ,0091
следовательно ,91
- мы намеренно исключаем целые числа, имеющие то же количество делителей, что и их обращение, т.е. те, которые принадлежат OEIS: A062895
Вызов
Учитывая две последовательности, определенные выше, ваша задача - написать программу или функцию, которая при заданном целом числе n
(вы можете выбрать 0 или 1-индексированный) возвращает n-е бедное и n-е богатое число.
вход
- Целое число (
>= 0
если 0 или>= 1
1)
Выход
- 2-целые числа, одно для плохой последовательности и одно для богатой последовательности, в том порядке, который вы предпочитаете, если это соответствует
Примеры :
INPUT | OUTPUT
----------------------------------
n (1-indexed) | poor rich
----------------------------------
1 | 19 10
18 | 63 56
44 | 213 112
95 | 298 208
4542 | 16803 10282
11866 | 36923 25272
17128 | 48453 36466
22867 | 61431 51794
35842 | 99998 81888
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - Стандартные правила применяются к вашему ответу с правилами ввода / вывода по умолчанию , поэтому вам разрешено использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода (например, TIO ).
- Кроме того, добавление объяснения для вашего ответа настоятельно рекомендуется.
2
. Для этого, см следствие 1.4 в конце следующей статье, сn
равным19, 199, 1999, ...
: m-hikari.com/ijcms-password/ijcms-password13-16-2006/...Ответы:
05AB1E , 16 байтов
Попробуйте онлайн!
0-индексированный [богатый, бедный]:
Может быть, кто-то может объяснить, почему эта версия, похоже, не заканчивается, но когда я нажимаю «отменить выполнение» на TIO, она заканчивается с правильным ответом, или если вы подождите 60 секунд, вы получите правильный ответ. Для версии, которая завершается «правильно», вы можете использовать:
T+nL.¡ÂÑgsÑg.S}¦ζsè
+3 байтаисточник
∞n5è
что будет рассчитывать только первые 6 чисел. Я думаю, когда эти типы конструкций зацикливания / группировки / разбиения вступают в игру, ленивый eval терпит неудачу, и он пытается вычислить все элементы перед возвратом.€g
.. Я использовал его так часто. Сохранял бы здесь байт с (теперь равным байтом) альтернативой‚рgÆ.±
. Хороший ответ, хотя! Отличное использование.¡
!δg
лол.JavaScript (ES6),
121 115 113111 байтВвод 1-индексирован. Выходы как
[poor, rich]
.Попробуйте онлайн!
комментарии
Вспомогательная функция
Основной
источник
Желе , 22 байта
Попробуйте онлайн!
Полная программа, принимающая 1-индексированное на стандартном вводе и возвращающая список n-го числа с плохим и богатым порядком в этом порядке.N
объяснение
источник
Wolfram Language (Mathematica) , 152 байта
Попробуйте онлайн!
Если гипотеза верна, то это 140-байтовое решение также работает
Попробуйте онлайн!
Вот плохой против богатого сюжета
источник
a(27635)= {70003, 65892}
Perl 6 , 81 байт
Попробуйте онлайн!
* > *
является анонимной функцией, которая возвращает истину, если ее первый аргумент больше, чем ее второй. Аналогично для* < *
. Первый выберет числа, которые принадлежат богатой последовательности, второй выберет те, которые принадлежат плохой последовательности.(* > *, * < *).map(-> &c { ... })
создает пару бесконечных последовательностей, каждая из которых основана на одной из функций компаратора: обогащенная последовательность и плохая последовательность в этом порядке.»[$_]
индексирует обе эти последовательности, используя$_
аргумент функции верхнего уровня, возвращая двухэлементный список, содержащий$_
th-й элемент обогащенной последовательности и$_
th-й член плохой последовательности.grep $_ %% *, 1..$_
производит список делителей$_
.map { grep $_ %% *, 1..$_ }, $_, .flip
создает двухэлементный список делителей$_
и делителей$_
с перевернутыми цифрами («перевернутый»).[[&c]]
сокращает этот двухэлементный список с помощью функции сравнения&c
(больше или меньше), создавая логическое значение, указывающее, принадлежит ли это число к обогащенной последовательности с плохой последовательностью.источник
1..$_
может быть^$_
. Вы также можете переместить[$_]
внутрь карты. 78 байтPython 2 ,
142141 байтПопробуйте онлайн!
Нерекурсивная альтернатива (очень похожая на другие ответы Python)
Python 2 , 143 байта
Попробуйте онлайн!
источник
Python 2 ,
158153 байта-2 байта благодаря shooqie
Попробуйте онлайн!
Ввод 0-индексирован. Выходы как
poor rich
.источник
+=[c]
вместо.append(c)
работы?Рубин , 128 байт
Ввод нулевой индексации . Выходы как [бедные, богатые].
объяснение
Попробуйте онлайн!
источник
Perl 6 , 76 байт
Попробуйте онлайн!
Я не видел ответа Шона по Perl 6 , но это работает по-другому. Обратите внимание, что я жестко закодировал верхний предел как
n*3+99
, что, вероятно, не совсем правильно. Тем не менее, я мог бы заменить*3
with³
без лишних байтов, что сделало бы программу гораздо менее эффективной, если бы она была более правильной.источник
Python 2 , 152 байта
Попробуйте онлайн!
В конечном итоге это очень похоже на ответ Рода . Возвращает нулевой проиндексированный
n
бедный, богатый кортеж.источник
Icon ,
180175 байтовПопробуйте онлайн!
источник
APL (Dyalog Unicode) , 34 байта
Попробуйте онлайн!
Спасибо Adám и ngn за помощь в игре этого чудовища.
Время ожидания TIO для больших индексов (которые требуют
⍳1e5
или⍳1e6
), но при достаточном времени и памяти функция завершится правильно.источник
R ,
152137 байт-12 байт благодаря Джузеппе -3 байт благодаря digEmAll
Попробуйте онлайн!
T
целое число, которое в настоящее время пробуется; последние бедные и богатые числа хранятся в вектореF
.Самый короткий способ, которым я мог найти обращение целого числа, это преобразование его в цифры в базе 10 с модульной арифметикой, а затем обратное преобразование с инвертированными степенями 10, но я ожидаю, что меня обгонят на этом и других фронтах.
Объяснение (предыдущей, аналогичной версии):
источник
nchar
.log10
!JavaScript (Node.js) ,
190180 байтВыходы как
[poor, rich]
.Попробуйте онлайн!
объяснение
d(n)
функцияЭтот помощник находит количество факторов, которые имеет число.
Основная функция
источник
C # (интерактивный компилятор Visual C #) , 221 байт
Попробуйте онлайн!
источник