Esto es diferente de Mi Palabra puede golpear tu Palabra, ya que es menos compleja y solo requiere que la calcules y no la compares.
Para encontrar la raíz digital, tome todos los dígitos de un número, agréguelos y repita hasta obtener un número de un dígito. Por ejemplo, si el número era 12345
, añadiría 1
, 2
, 3
, 4
, y 5
, conseguir 15
. Luego agregarías 1
y 5
, dándote 6
.
Tu tarea
Dado un número entero N (0 <= N <= 10.000) a través de STDIN , imprimir la raíz digital del N .
Casos de prueba
1 -> 1
45 -> 9
341 -> 8
6801 -> 6
59613 -> 6
495106 -> 7
Recuerde, este es el código de golf , por lo que gana el código con el menor número de bytes.
code-golf
number
arithmetic
Oliver Ni
fuente
fuente
number
. En particular. ¿Se debe admitir la entrada0
?STALEMATE
. Sería mejor cerrar el otro como un engaño de esto.Respuestas:
Pyke, 1 byte
Pruébalo aquí!
Toma la raíz digital de la entrada
fuente
Gelatina ,
7 5 43 bytesTryItOnline! o todos los casos de prueba
¿Cómo?
Se sabe que la raíz digital obedece la fórmula (n-1)% 9 + 1.
Este es el mismo que el último dígito de la base de biyectiva 9
(y debido a que la aplicación
0ḃ9=[]
y[]Ṫ=0
crear el mango del borde de los casos de cero).fuente
JavaScript (ES6),
1610 bytesCasos de prueba
Mostrar fragmento de código
fuente
MATL , 3 bytes
Pruébalo en línea!
Muchos (respuestas ahora eliminadas) intentaron usar el módulo 9 para obtener el resultado. Este es un gran atajo, pero desafortunadamente no funciona para múltiplos de 9. MATL tiene una función para módulo en el intervalo
[1, n]
. Usando este módulo, tenemos1 % 3 == 1, 2 % 3 == 2, 3 % 3 == 3, 4 % 3 == 1
, etc. Esta respuesta simplemente toma el módulo de entrada nueve usando este módulo personalizado.fuente
Mathematica,
2711 bytesMathematica
Mod
toma un tercer parámetro como un desplazamiento del rango resultante del módulo. Esto evita disminuir la entrada e incrementar la salida.fuente
Python,
1620 bytes+4 bytes para manejar el caso de borde de cero.
repl.it
fuente
~-input()%9+1
print
?0
resultado en9
lugar de0
, que es lo que está atendido por lan and
parte del código), además, habría contado como 19 bytes, no 13 ( ya que elprint
y el espacio deben ser contados).Julia, 12 bytes
o
mod1
es una alternativa a lamod
que se asigna el rango en[1, n]
lugar de[0, n)
.fuente
PHP, 15 bytes
Versión anterior PHP, 55 Bytes
fuente
<?=--$argv[1]%9+1?>
Haskell,
3534 bytesPruébalo en Ideone.
Explicación:
fuente
Perl, 15 bytes
Incluye +2 para
-lp
Dar entrada sobre STDIN
root.pl
Esta es la solución aburrida que ya se ha dado en muchos idiomas, pero al menos esta versión admite
0
también esMás interesante hacer adiciones repetidas reales (aunque en otro orden) es, de hecho, solo 1 byte más:
fuente
R,
72 6729 bytesEditar: Gracias a @rturnbull por reducir dos bytes.
fuente
ifelse
puede reemplazarse por`if`
un comportamiento idéntico, lo que le ahorra un par de bytes.if
` funcionaba. ¿Podría dar un ejemplo o quizás agregarlo a Consejos para jugar al golf?ifelse
. En este caso,`if`(n%%9|!n,n%%9,9)
proporciona un comportamiento idéntico al código que ha publicado. Por lo que puedo decir, este comportamiento no está documentado. Agregaré un comentario al hilo de consejos.Retina , 7 bytes
Pruébalo en línea!
Veo muchas soluciones matemáticas, pero en Retina el enfoque directo parece ser el mejor.
Explicación
{`
hace que todo el programa se ejecute en un bucle hasta que la cadena ya no cambie. El ciclo consta de dos etapas:Convierte cada dígito a unario.
Cuente el número de caracteres (= convierta el número unario a decimal).
Esto funciona porque la conversión de cada dígito a unario sin separador entre dígitos crea un único número unario que es igual a la suma de todos los dígitos.
fuente
Brachylog , 9 bytes
Pruébalo en línea!
Explicación
Enfoque alternativo, 11 bytes
Éste usa el meta-predicado
i - Iterate
para llamar aI
veces el predicado{@e+}
en la entrada. Esto intentará valores deI
desde0
hasta el infinito hasta que uno lo haga de modo que la salida dei
sea un solo dígito que sea#0
verdadero.fuente
JavaScript (ES6),
4138 bytesGuardado 3 bytes, gracias a Bassdrop Cumberwubwubwub
Toma y devuelve una cadena.
Casos de prueba
Mostrar fragmento de código
fuente
s.split``
a[...s]
CJam ,
1913 bytesInterprete
Explicación:
Gracias a 8478 (Martin Ender) por -6 bytes.
CJam, 6 bytes
Sugerido por 8478 (Martin Ender). Interprete
Estaba pensando en eso, pero Martin acaba de enterarse antes que yo. Explicación:
fuente
:
, por lo que puede hacerlo:~:+
. Tampoco hace daño ejecutar el bloque al menos una vez para que pueda usar ung
bucle en lugar de unw
bucle.r{_,1>}{:~:+`}w
funciona, pero no sé cómo demonios se supone que debo usarg
aquí.r{:~:+_s\9>}g
(por supuesto, la solución de forma cerradari(9%)
es mucho más corta.Java 7, 63 bytes
Función recursiva que solo obtiene dígitos con mod / div. Nada sofisticado.
Puerto barato
de Jonathan Allan serían unos miserables 28 bytes:
fuente
Python 2,
5451 bytesGracias a Oliver y Karl Napf por ayudarme a ahorrar 3 bytes.
fuente
while len(i)>1
awhile~-len(i)
para guardar un byte.input()
y forzar la entrada entre comillas para ahorrar 2 bytes.Python, 45 bytes
Toma el argumento como una cadena.
fuente
05AB1E , 6 bytes
Pruébalo en línea!
Explicación
fuente
C,
6429 bytesC port de la respuesta de Jonathan Allan (con caso especial 0).
Código de 64 bytes anterior:
q
toma la suma cruzada yf
repite tomando la suma cruzada hasta un solo dígito.fuente
Retina , 15 bytes
Pruébalo en línea! (La primera línea habilita un conjunto de pruebas separado por salto de línea).
Explicación
Convierta la entrada a unario.
Tome un módulo basado en 1 eliminando nueves que tengan al menos un carácter más después de ellos.
Cuente el número restante de 1s para convertir de nuevo a decimal.
fuente
Perl 6 , 29 bytes
Expandido:
fuente
Factor 24
Inteligente , mathy respuesta.
63 para una solución iterativa tonta:
fuente
Laberinto , 8 bytes
usando la ecuación
(n-1)%9+1
:?
lee la entrada como decimal y la empuja a la pila(
disminuye la parte superior de la pila_
empuja un cero en la parte superior de la pila9
empuje la parte superior de la pila reventada 10 veces el dígito (en este caso, 9)%
aparece y, aparece x, empuja x% y)
incrementa la parte superior de la pila!
aparece la parte superior de la pila y la coloca como una cadena decimal@
termina el programafuente
Pyth -
7467 bytesNo es la mejor, pero aún supera una buena cantidad de respuestas:
Como la versión anterior, pero manejando también casos de múltiplos de 9, usando lógica o.
Esta versión falla el caso de prueba 45 :
Explicación:
Pruébalo aquí
¡Prueba la versión anterior aquí!
Soluciones anteriores:
Explicación :
¡Estás invitado a probarlo aquí !
fuente
jQ9
no actúa como Jelly'sḃ9
:-PAPL (Dyalog) ,
15bytes de 9 bytesPruébalo en línea!
fuente
Hexagonia
1915 bytesMás legible:
Pruébalo en línea!
-3 bytes adoptando un enfoque diferente, haciendo que el caso de borde 0 sea trivial.
-1 byte arreglando el error de caso de borde 0
Usando la fórmula ((n-1) mod 9) + 1 como muchas otras soluciones también.
fuente
K (oK) , 9 bytes
Solución:
Pruébalo en línea!
Explicación:
Súper sencillo. Divida el número en dígitos y resuma: haga esto hasta que el resultado converja:
fuente
x\y
codificany
en la basex
con tantos dígitos como sea necesario, así que es un poco más corto:(+/10\)/
10\:
.. pero no en OK - y.:'$
es el mismo número de bytes - así que fui con eso :)\:
kdb + (3.4+), pero para OK necesito saber cuántos 10s poner en mi lista.Keg , 6 bytes (SBCS en Keg wiki)
Explicación:
fuente
Rubí, 12 bytes.
fuente
19
? ¿No debería ser eso9
?