Varios lenguajes de programación construyen enteros grandes mediante la 'concatenación' del dígito al final del número existente. Por ejemplo, Labyrinth o Adapt . Al concatenar el dígito hasta el final, quiero decir que, si el número existente es y el dígito es , el número resultante es .
Un número construido es un número que se puede construir de esta manera mediante el uso de múltiplos de números de un solo dígito: AKA un elemento en una de estas 9 secuencias:
Para proporcionar un ejemplo de cómo se construyen las secuencias, así es como se construye la secuencia para :
incluyen u 33 y para demostrar cuándo . Unmontónde dígitos punteados por espacio.
Puede que aún no esté claro cómo se construyen estas secuencias, por lo que aquí hay dos formas diferentes de entenderlas:
Cada secuencia comienza desde el único dígito. El siguiente término se encuentra tomando el siguiente múltiplo de ese dígito, multiplicando el término anterior por y sumando el múltiplo. En términos de secuencia:
donde es un solo dígito ( a )
Cada uno de los elementos en cualquier punto de la secuencia (tome por ejemplo) son los múltiplos de del al , donde se construye por
Entonces, los primeros valores son , los segundos son , los terceros , etc.
Su tarea es tomar un número construido como entrada y generar el dígito inicial utilizado para construirlo. Puede suponer que la entrada siempre será un número construido y será mayor que . Puede ser un solo dígito, que se asigna a sí mismo.
Puede tomar datos de cualquier manera razonable, incluso como una lista de dígitos, como una cadena, etc. Es aceptable (aunque no recomendado) tomar los datos de manera individual o en cualquier otra base de su elección.
Este es un código de golf, por lo que gana el código más corto.
Casos de prueba
u_n => a
37035 => 3
6172839506165 => 5
5 => 5
246913580244 => 2
987654312 => 8
61728395061720 => 5
1111104 => 9
11111103 => 9
111111102 => 9
2469134 => 2
98760 => 8
8641975308641962 => 7
o como dos listas:
[37035, 6172839506165, 5, 246913580244, 987654312, 61728395061720, 1111104, 11111103, 111111102, 2469134, 98760, 8641975308641962]
[3, 5, 5, 2, 8, 5, 9, 9, 9, 2, 8, 7]
Cuando publiqué este desafío, no me di cuenta de que podría simplificarse tanto por el método utilizado en la respuesta de Grimy , por lo que estaría muy interesado en respuestas que tengan un enfoque más matemático para resolver esto, en lugar de un 'dígito' truco (Obviamente, todas las respuestas válidas son igualmente válidas, justo lo que me gustaría ver).
Respuestas:
05AB1E ,
754 bytesPruébalo en línea!
fuente
a * (((10**n - 1) / 9 - n) / 9)
. Multiplique eso por 9 y agreguea*n
, y obtendráa * ((10**n - 1) / 9)
, también conocido como el dígito, repetidamente n veces. Resulta sumar 9 en lugar dea*n
trabajos para n = 1, y para n más grande la diferencia constante es insignificante junto al crecimiento exponencial.MathGolf , 6 bytes
Pruébalo en línea!
Desafortunadamente, no hay ninguna
head
operación en MathGolf, así que tengo que conformarme con▒├Þ
convertir a cadena, hacer pop desde la izquierda y descartar todo menos la parte superior de la pila.fuente
Jalea , 5 bytes
Pruébalo en línea!
Usando el enfoque de Grimy .
fuente
Stax , 5 bytes
Ejecutar y depurarlo
fuente
Japt
-g
,765 bytes-1 byte gracias a Shaggy
Toma la entrada como una cadena
Pruébalo | Probar múltiples entradas
fuente
Carbón de leña , 7 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. El método de @ Grimy, por supuesto. Aquí hay un enfoque matemático de 27 bytes:
Pruébalo en línea! El enlace es a la versión detallada del código. Se bloquea en entradas no válidas. Explicación:
Ingrese el número construido.
Interprete la lista como un número en la base 10, multiplique por todos los números desde
0
hasta9
y vea si aparece el número construido.Empuje la longitud de la lista a sí misma. La lista por lo tanto se hace de la forma
[0, 1, 2, ..., n]
.Recrea los números construidos pero esta vez encuentra y genera el índice en el que apareció el número de entrada.
fuente
Laberinto ,
28 2220 bytesAplica el método basado en dígitos descrito por Grimy por división entera repetida por diez hasta encontrar cero.
Pruébalo en línea!
fuente
Espacio en blanco , 108 bytes
Se agregaron letras
S
(espacio),T
(tabulación) yN
(nueva línea) solo como resaltado.[..._some_action]
agregado solo como explicación.Puerto de @Grimy respuesta 05AB1E 's , excepto que no tengo una orden interna para obtener el primer dígito. ;)
Pruébelo en línea (solo con espacios en bruto, pestañas y nuevas líneas).
Explicación en pseudocódigo:
fuente
Python 3 , 22 bytes
Pruébalo en línea!
La respuesta 05AB1E del puerto de Grimy
Python 3 , 74 bytes
Pruébalo en línea!
Explicación
Función recursiva. Itera sobre la secuencia de cada dígito
l
, comenzando en1
. Si la entradai
es igual a la iteración actualj
,l
se devuelve el dígito correspondiente . De lo contrario, si el valor actualj
en la secuencia excede el valor de entradai
, incrementará el dígitol
y comenzará de nuevo. El argumentok
se usa para incrementar el factor de multiplicación.fuente
JavaScript (ES6),
1615 bytesGracias a @Grimy por levantar la restricción de 32 bits que tenía con la versión anterior.
Usando el encantamiento mágico de Grimy . Toma la entrada como una cadena.
Pruébalo en línea!
JavaScript (ES6), 53 bytes
Enfoque ingenuo de la fuerza bruta.
Pruébalo en línea!
fuente
-~n*9
puede sern*9+9
, que es el mismo bytecount pero debería deshacerse de la limitación de 32 bits si lo entendí correctamente.14808
n=>n
funciona para todas las entradas.Java 8, 23 bytes
Puerto de @Grimy 's respuesta 05AB1E , así que asegúrese de que le upvote!
Pruébalo en línea.
Pero debido a que me siento un poco mal por @cairdCoinheringaahing , aquí un enfoque de fuerza bruta con un poco más de precio ( 83 bytes ):
Pruébalo en línea.
Explicación:
fuente
PHP , 20 bytes
Pruébalo en línea!
¡Otro puerto de respuestas de Grimy !
fuente
Jalea , 8 bytes
Pruébalo en línea!
Un programa completo que toma un número entero e imprime el dígito de inicio. ¡No usa el método inteligente de Grimy! Terriblemente ineficiente para una entrada mayor. La siguiente versión maneja todos los casos de prueba pero es un byte más largo:
Jalea , 9 bytes
Pruébalo en línea!
fuente
Hy , 44 bytes
Utiliza el método de Grimy
Pruébalo en línea!
fuente
Barril
-rr
, 4 bytesPruébalo en línea!
Por supuesto, utiliza el mismo enfoque que la respuesta 05AB1E. También usa el nuevo
-rr
bandera (revertir e imprimir sin formato).Transpiles a:
fuente
Wren , 30 bytes
Solo un puerto de la mayoría de las respuestas.
Pruébalo en línea!
fuente