Introducción
En el extraño mundo de los números enteros, los divisores son como activos y suelen llamar "ricos" a los números que tienen más divisores que su inversión, mientras que llaman a los "pobres" los que tienen menos divisores que su inversión.
Por ejemplo, el número tiene cinco divisores: , mientras que su inversión, , tiene solo cuatro: .
Entonces se llama un número rico , mientras que un número pobre .
Dada esta definición, podemos crear las siguientes dos secuencias enteras de números ricos y pobres:
(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
... | ... | ...
Notas:
- como "inversión" de un número nos referimos a su inversión digital , es decir, tener sus dígitos en base 10 invertidos. Esto significa que los números que terminan con uno o más ceros tendrá un "corto" inversión: por ejemplo, la inversión de
1900
es0091
por lo tanto91
- excluimos intencionalmente los números enteros que tienen el mismo número de divisores que su inversión, es decir, los que pertenecen a OEIS: A062895
Desafío
Teniendo en cuenta las dos secuencias definidas anteriormente, su tarea es escribir un programa o función que, dado un número entero n
(puede elegir 0 o 1 indexado), devuelve el enésimo número pobre y el enésimo número rico.
Entrada
- Un número entero (
>= 0
si está indexado a 0 o>= 1
si está indexado a 1)
Salida
- 2 enteros, uno para la secuencia pobre y otro para la secuencia rica, en el orden que prefiera siempre que sea consistente
Ejemplos:
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
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de código de golf lo desalienten de publicar respuestas con idiomas que no sean de código. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Las reglas estándar se aplican a su respuesta con las reglas de E / S predeterminadas , por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código (es decir, TIO ).
- Además, se recomienda agregar una explicación para su respuesta.
2
. Para esto, vea el Corolario 1.4 al final del siguiente documento, con eln
mismo19, 199, 1999, ...
: m-hikari.com/ijcms-password/ijcms-password13-16-2006/…Respuestas:
05AB1E , 16 bytes
Pruébalo en línea!
0 indexado [rico, pobre]:
Tal vez alguien pueda explicar por qué esta versión no parece terminar, pero cuando hago clic en "cancelar ejecución" en TIO, finaliza con la respuesta correcta, o si espera 60 segundos, obtiene la respuesta correcta. Para una versión que termina "correctamente", podría usar:
T+nL.¡ÂÑgsÑg.S}¦ζsè
+3 bytesfuente
∞n5è
solo calcularía los primeros 6 números. Creo que cuando entran en juego estos tipos de construcciones de bucle / agrupación / división, la evaluación diferida falla e intenta calcular todos los elementos antes de regresar.€g
... Lo usé muy a menudo. Habría guardado un byte aquí con la alternativa (ahora igual byte)‚рgÆ.±
. Buena respuesta sin embargo! Gran uso de.¡
!δg
jajaja.JavaScript (ES6),
121 115 113111 bytesLa entrada está indexada en 1. Salidas como
[poor, rich]
.Pruébalo en línea!
Comentado
Función auxiliar
Principal
fuente
Jalea , 22 bytes
Pruébalo en línea!
Explicación
fuente
Wolfram Language (Mathematica) , 152 bytes
Pruébalo en línea!
Si la conjetura es cierta, entonces esta solución de 140 bytes también funciona
Pruébalo en línea!
Aquí hay una trama pobre vs rica
fuente
a(27635)= {70003, 65892}
Perl 6 , 81 bytes
Pruébalo en línea!
* > *
es una función anónima que devuelve verdadero si su primer argumento es mayor que el segundo. Del mismo modo para* < *
. El primero seleccionará los números que pertenecen a la secuencia rica, el último seleccionará los que pertenecen a la secuencia pobre.(* > *, * < *).map(-> &c { ... })
produce un par de secuencias infinitas, cada una basada en una de las funciones de comparación: la secuencia rica y la secuencia pobre, en ese orden.»[$_]
indexa en ambas secuencias usando$_
, el argumento de la función de nivel superior, devolviendo una lista de dos elementos que contiene el$_
miembro th de la secuencia rica y el$_
miembro th de la secuencia pobre.grep $_ %% *, 1..$_
produce una lista de los divisores de$_
.map { grep $_ %% *, 1..$_ }, $_, .flip
produce una lista de dos elementos de los divisores de$_
, y los divisores de$_
con sus dígitos invertidos ("invertidos").[[&c]]
reduce esa lista de dos elementos con la función de comparación&c
(ya sea mayor o menor que), produciendo un valor booleano que indica si este número pertenece a la secuencia rica de la secuencia pobre.fuente
1..$_
puede ser^$_
. También puede mover[$_]
al interior de la función de mapa. 78 bytesPython 2 ,
142141 bytesPruébalo en línea!
Alternativa no recursiva (muy similar a las otras respuestas de Python)
Python 2 , 143 bytes
Pruébalo en línea!
fuente
Python 2 ,
158153bytes-2 bytes gracias a shooqie
Pruébalo en línea!
La entrada está indexada en 0. Salidas como
poor rich
.fuente
+=[c]
lugar de.append(c)
trabajar?Ruby , 128 bytes
La entrada está indexada a cero . Salidas como [pobre, rico].
Explicación
Pruébalo en línea!
fuente
Perl 6 , 76 bytes
Pruébalo en línea!
No vi la respuesta de Sean Perl 6 , pero esto funciona de una manera diferente. Tenga en cuenta que he codificado el límite superior como
n*3+99
, lo que probablemente no sea estrictamente correcto. Sin embargo, podría reemplazar el*3
con³
de no bytes adicionales, lo que haría el programa mucho menos eficiente, si más correcta.fuente
Python 2 , 152 bytes
Pruébalo en línea!
Termina siendo bastante similar a la respuesta de Rod . Devuelve una
n
tupla pobre y rica indexada a cero .fuente
Icono ,
180175 bytesPruébalo en línea!
fuente
APL (Dyalog Unicode) , 34 bytes
Pruébalo en línea!
Gracias a Adám y ngn por ayudarme a jugar golf a esta monstruosidad.
TIO agota el tiempo de espera para los índices más grandes (que requieren
⍳1e5
o⍳1e6
), pero con suficiente tiempo y memoria, la función terminará correctamente.fuente
R ,
152137 bytes-12 bytes gracias a Giuseppe -3 bytes gracias a digEmAll
Pruébalo en línea!
T
es el entero que se está probando actualmente; Los últimos números pobres y ricos se almacenan en el vectorF
.La forma más corta que pude encontrar de revertir un número entero fue convertirlo a dígitos en la base 10 con aritmética modular, y luego volver a convertir con potencias de 10 invertidas, pero espero ser superado en este y otros frentes.
Explicación (de la versión anterior, similar):
fuente
nchar
.log10
!JavaScript (Node.js) ,
190180 bytesSalidas como
[poor, rich]
.Pruébalo en línea!
Explicación
d(n)
FunciónEste ayudante encuentra la cantidad de factores que tiene un número.
Función principal
fuente
C # (compilador interactivo de Visual C #) , 221 bytes
Pruébalo en línea!
fuente