También conocido como la [raíz analógica]
(¡ Frente a la raíz digital! );)
La raíz digital de un número es la suma continua de sus dígitos hasta que sea un solo dígito, por ejemplo, la raíz digital de 89456 se calcula así:
8 + 9 + 4 + 5 + 6 = 32
3 + 2 = 5
La raíz digital de 89456 es 5.
Dado un dígito como entrada a través de STDIN , imprima / devuelva todos los números de dos dígitos posibles que tengan esa raíz digital. Si lo necesita, puede incluirse, por ejemplo, 05
Estas son todas las posibles entradas y salidas:
(Puedes elegir si incluir o no el cero inicial para el dígito en sí)
I / O
0 => 0 o 00 o nada
1 => 01 y / o 1, 10, 19, 28, 37, 46, 55, 64, 73, 82, 91 - Asegúrese de que 1 no devuelva 100
2 => 02 y / o 2, 11, 20, 29, 38, 47, 56, 65, 74, 83, 92
3 => 03 y / o 3, 12, 21, 30, 39, 48, 57, 66, 75, 84, 93
4 => 04 y / o 4, 13, 22, 31, 40, 49, 58, 67, 76, 85, 94
5 => 05 y / o 5, 14, 23, 32, 41, 50, 59, 68, 77, 86, 95
6 => 06 y / o 6, 15, 24, 33, 42, 51, 60, 69, 78, 87, 96
7 => 07 y / o 7, 16, 25, 34, 43, 52, 61, 70, 79, 88, 97
8 => 08 y / u 8, 17, 26, 35, 44, 53, 62, 71, 80, 89, 98
9 => 09 y / o 9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 99
No hay lagunas estándar , y es code-golf , por lo que gana la respuesta más corta en bytes.
¡Enhorabuena a Heeby Jeeby Man por su increíble respuesta de 46 bytes para el cerebro!
Respuestas:
Pyke, 6 bytes
Pruébalo aquí!
fuente
JavaScript (ES6),
273130 bytesLas devoluciones
0
para0
o un conjunto de soluciones de otro modo.Manifestación
Mostrar fragmento de código
fuente
+
para guardar otro byte? Aunque no funcionaría con la cadena estándar de esa manera, supongo.+
vino esto ... Actualizado. ¡Gracias!05AB1E ,
13129 bytes-3 bytes gracias a Adnan
Pruébalo en línea!
Explicación
fuente
SOSO
, ya que el número nunca será mayor que 99.тL<
no es realmente más corto que simple99Ý
. ;)Haskell , 21 bytes
f
toma un entero y devuelve una lista de enteros.Pruébalo en línea!
d
y genera el rango con cada noveno número hasta un límite de 99, a excepción del caso complicado de0
.0
, usa ese poder0^d==1
para0
y==0
para todos los demás dígitos. Así99^0^0^d
da1
para0
pero99
para cualquier otra cosa.fuente
Jalea , 8 bytes
Pruébalo en línea!
Algoritmo diferente a mi otra respuesta.
fuente
Brain-Flak , 46 bytes
Pruébalo en línea!
Explicación
Esta respuesta usa una idea de la respuesta de Megatom, es decir, usar la altura de la pila como la diferencia entre el contador de bucle y el incremento. Al igual que las respuestas anteriores, esta respuesta tiene un gran bucle externo para capturar todos los ceros. Dentro del bucle, presionamos 10 para que actúe como un contador, luego iniciamos otro bucle anidado. En este bucle, disminuimos el contador en 1
Luego sacamos los dos primeros elementos, que son el contador y el último elemento que calculamos. Agregamos estos a la altura de la pila para contrarrestar la disminución, luego empujamos esto dos veces, una para la salida y otra para que se pueda consumir para calcular el siguiente resultado. Empujar cosas dos veces significa que accidentalmente empujamos un valor adicional que debe eliminarse al final de la ejecución.
La razón por la que esto apenas supera a Megatom es que la respuesta de Megatom se ve obligada a obtener su altura de pila mientras el último resultado aún está en la pila. Esto significa que se ven obligados a usar un método bastante costoso
[()]
para disminuir el total en uno. Al mover el duplicado al final del ciclo, puedo evitar tener que usarlo[()]
a costa de un adicional{}
al final del programa. Si Megatom usara esta estrategia, su respuesta sería la siguiente:También 46 bytes.
Brain-Flak , 52 bytes
Pruébalo en línea!
Explicación
El bucle externo principal crea un caso especial para la entrada de cero. Si se ingresa cero, saltamos sobre el ciclo completo, saltamos cero y luego no sacamos nada. De lo contrario, entramos en el bucle. Aquí empujamos el ciclo 10 veces cada vez agregando 9 a la parte superior de la pila, manteniendo los valores antiguos. Como 9 conserva sumas digitales, esto nos dará el siguiente valor. Una vez que el ciclo ha expirado, usamos el cero que generó para salir del ciclo que luego aparece
{}
al final.Brain-Flak , 56 bytes
Pruébalo en línea!
Explicación
Esta versión funciona de manera muy similar a la anterior, excepto que hacemos un bucle 9 veces en lugar de 10 dejando fuera el valor original. Para hacer esto, tenemos que reorganizar un poco la forma en que manejamos la memoria. Todos los bytes que podríamos haber guardado usando este método se ponen en limpieza.
fuente
Python 2 , 29 bytes
Pruébalo en línea!
fuente
Brachylog , 12 bytes
Pruébalo en línea!
Explicación
fuente
Bash ,
3127 bytesPruébalo en línea!
anterior
fuente
brace expansion: (...) A sequence expression takes the form {x..y[..incr]}, where x and y are either integers or single characters, and incr, an optional increment, is an integer. (...) When the increment is supplied, it is used as the difference between each term. The default increment is 1 or -1 as appropriate.
Dyalog APL, 15 bytes
¿Cómo?
⍵,10⍴9
- concatenar entrada con 109
s (⍵ 9 9 9 9 9 9 9 9 9 9
).+\
- suma acumulativa.(×⍵)/
- expandir los tiempos de signum - donde signum da 1 para 1-9 y 0 para 0.Pruébalo en línea!
Dyalog APL, 24 bytes
Requiere
⎕IO←0
.¿Cómo?
fuente
Brain-Flak , 48 bytes
Pruébalo en línea!
Puedo agregar una explicación más tarde.
fuente
Mathematica, 25 bytes
funciona para 0
fuente
0
. Esto tampoco incluiría números cuyos dígitos se sumen a un número mayor que 9. (por ejemplo9
, no tendría99
en la salida).Jalea , 12 bytes
Pruébalo en línea!
Cómo funciona
fuente
0
En realidad , 18 bytes
Pruébalo en línea!
Explicación:
fuente
PHP, 41 bytes
imprime los valores separados por subrayado
ERA
es la constante más corto en PHP con el valor131116
. Puede reemplazarlo con la alternativa aburrida100
o finalizar el programa condie
Versión en línea
fuente
Brain-Flak ,
5452 bytesPruébalo en línea!
Mi primera incursión con Brain-Flak, y creo que lo he hecho bastante bien. ¿Alguien con más experiencia tiene consejos?
Cómo funciona:
fuente
Jalea , 12 bytes
Pruébalo en línea!
fuente
PHP, 35
Crea el rango
[$argn, 100)
con un paso9
como matriz y lo imprime. Si la entrada es0
, crea el rango[0,0]
=>array(0)
.fuente
Python,
4851 bytes3 bytes guardados gracias a @WheatWizard
fuente
~-x
lugar de(x-1)
if ~-x%9
~-n==~-x%9or x==n
para guardar un byteR , 23 bytes
Pruébalo en línea!
El enlace TIO se usa en
function(x)
lugar depryr::f
, ya que TIO no tiene elpryr
paquete instalado.fuente
Pyke, 6 bytes (versión anterior)
Compromiso de trabajo
Explicación:
fuente
Rubí , 25 bytes.
Pruébalo en línea!
fuente
C (gcc) , 55 bytes
f()
no es necesario que se llame con ningún argumento; Eln
está allí en lugar de fuera de la función para guardar un byte.Pruébalo en línea!
fuente
printf
encabezado interno del bucle: ¡ Pruébelo en línea!Carbón ,
1411 bytesPruébalo en línea! El enlace es a la versión detallada del código. Editar: ahorró
2 bytes al no imprimir nada para entrada cero y 1 byte mediante operaciones de vectorización de3 bytes gracias a @ ASCII-only. Explicación:fuente
Julia 0.6 , 18 bytes
Utilizo un ternario para captar el
0
caso y un rangon:9:99
para crear los números. En julia, un rango es unAbstractVector
y se puede usar en lugar de un número realVector
en la mayoría de los casos, pero solo se imprimirá ya1:9:91
que no satisface el desafío, así que lo envuelvo[_;]
para recopilar el contenido en aVector
.Pruébalo en línea!
fuente
Perl 5 , 25 + 1 (
-n
) = 26 bytesPruébalo en línea!
fuente
Clojure, 33 bytes
fuente
Clojure , 38 bytes
o como función anónima que es de 29 bytes
Pruébalo en línea!
gracias @steadybox
fuente
n=9
falta el último número99
,. Pruébalo en línea!Además, puede guardar un byte eliminando el espacio entref[n]
y(if(...
.Perl 5, 62 bytes
Seguramente habrá un camino más corto
fuente
Gol> <> , 12 bytes
Pruébalo en línea!
Cómo funciona
fuente