Definición
Aquí está el proceso para describir un número:
- Para cada número de
0
a9
que está presente en el número: - Escriba la frecuencia de ese dígito y luego el dígito.
Por ejemplo, para el número 10213223
:
- Hay
1
ocurrencia de0
, 2
ocurrencias de1
,3
ocurrencias de2
,2
ocurrencias de3
.
Por lo tanto, el número que describe 10213223
es 10213223
( 10
desde la primera propiedad, 21
desde la segunda, etc.).
Tenga en cuenta que el número de ocurrencias de un dígito puede ser mayor que 9 .
Tarea
Debe imprimir / imprimir todos los números que se describen a sí mismos.
Especificaciones
- Se aplican las lagunas estándar , excepto que se le permite codificar la salida o almacenar información relacionada con la salida en su programa.
- Los números en la salida pueden estar en cualquier orden .
- Los números en la salida pueden tener duplicados.
- Puede usar cualquier separador , si elige imprimir en lugar de imprimir.
- Se le permite prefijar y / o postfijar la salida si elige imprimir en lugar de la salida.
- El separador y el prefijo y el postfix no pueden contener ningún dígito (U + 0030 a U + 0039).
- La solución debe computarse en un día .
Lista completa (109 artículos)
22
10213223
10311233
10313314
10313315
10313316
10313317
10313318
10313319
21322314
21322315
21322316
21322317
21322318
21322319
31123314
31123315
31123316
31123317
31123318
31123319
31331415
31331416
31331417
31331418
31331419
31331516
31331517
31331518
31331519
31331617
31331618
31331619
31331718
31331719
31331819
1031223314
1031223315
1031223316
1031223317
1031223318
1031223319
3122331415
3122331416
3122331417
3122331418
3122331419
3122331516
3122331517
3122331518
3122331519
3122331617
3122331618
3122331619
3122331718
3122331719
3122331819
10413223241516
10413223241517
10413223241518
10413223241519
10413223241617
10413223241618
10413223241619
10413223241718
10413223241719
10413223241819
41322324151617
41322324151618
41322324151619
41322324151718
41322324151719
41322324151819
41322324161718
41322324161719
41322324161819
41322324171819
1051322314251617
1051322314251618
1051322314251619
1051322314251718
1051322314251719
1051322314251819
1051322325161718
1051322325161719
1051322325161819
1051322325171819
5132231425161718
5132231425161719
5132231425161819
5132231425171819
5132232516171819
106132231415261718
106132231415261719
106132231415261819
106132231426171819
106132231526171819
613223141526171819
1011112131415161718
1011112131415161719
1011112131415161819
1011112131415171819
1011112131416171819
1011112131516171819
1011112141516171819
1011113141516171819
1111213141516171819
10713223141516271819
101112213141516171819
Referencias
- Números autobiográficos: OEIS A047841
- Número biográfico: OEIS A047842
Respuestas:
gawk, 161 bytes
(saltos de línea y pestañas para mayor claridad)
Es un contador simple que utiliza el hecho de que cada número tiene una ocurrencia limitada. Por ejemplo, es 0 no más de una vez en cualquier número, 1 no más de 11 veces, 2 no más de 3 veces ... y así sucesivamente.
De esta manera solo hay 124415 números para verificar.
Luego crea todos los números y verifica su validez.
Se completa en unos segundos.
fuente
dc, 487 bytes
Codificó la solución. Comienzo con 22 y sumo las diferencias para obtener los siguientes números. Algunas operaciones de retorno, como agregar 1 cinco veces seguidas, se almacenan en registros.
Este es mi primer programa escrito en DC, por lo que probablemente pueda jugar mucho más.
[1+d1+d1+d1+d1+d]sa[1+d1+d1+d1+d97+d]sb[1+d1+d99+d1+d100+d]sc[1+d1+d1+d98+dlcx]sd[1+d100+d10000+d]se22d10213201+d98010+d2081+dlax11008995+dlax9800995+dlax208096+dlbxldx999891495+dlax2091108096+dlbxldx10410100909697+dldx30909100909798+dlcx9899+dlex1009999990079798+dlcx10909899+dlex4080909099989899+dlex1091000000+d100999998899089899+d1+d100+d10910000+d10 8^+d50709091 10 10^*+d397888989888989899+dlex10 6^+d10 8^+d10 10^+d10 12^+d1001 10 14^*+d9602010000000100000+d90398989999999900000+f
Puede ejecutar el programa usando
dc -e "[solution]"
, donde [solución] es la cadena de arriba. Produce los números en orden inverso.dc -e "[solution]" | sort -n
para salida en el mismo orden que la lista.fuente
Rubí, 776 bytes
Las reglas dicen que "se le permite codificar la salida", por lo que esta solución hace exactamente eso.
Ruby, 116 bytes
Un programa mucho más corto que tarda demasiado en ejecutarse, pero dado el tiempo suficiente debería poder hacerlo. No sé si se ajusta a la limitación de tiempo.
fuente
Python 2.7 - 684 bytes
Tipo de medio codificado y medio calculado. Toma el enfoque de dividir los números en grupos de un tamaño manejable con un límite superior e inferior. La lista i almacena el límite inferior y la diferencia entre este y el límite superior como una lista anidada. Todos los candidatos potenciales se verifican dentro del rango agregado a la lista de salida o. Los últimos 7 números están tan separados que es más barato almacenarlos en su propia lista y agregarlos al final.
Actualmente se ejecuta en un par de segundos y obviamente aumentar el tamaño del grupo reduciría el conteo de bytes pero aumentaría el tiempo de ejecución. No estoy seguro de a qué se reduciría y aún estaría dentro del límite de un día.
fuente
/// , 542 bytes
Pruébalo en línea!
¡Definitivamente menos de 1440 bytes seguro! Utiliza 28 constantes junto con el literal, una cantidad inusualmente alta para ///.
fuente
22*2^
..., todo lo anterior es buscar y reemplazar patrones.