Dado un número como entrada, imprima su suma colectiva
¿Qué es una suma colectiva?
Considere el número 13214
, la entrada
Recorriendo cada uno de los dígitos comenzando desde la izquierda, podremos obtener su suma colectiva.
1
significa mirar el primer dígito y agregarlo a la suma, suma = 1
3
significa mirar los "primeros 3 dígitos" y agregarlo a la suma, suma = 1 + 132
2
significa mirar los "primeros 2 dígitos" y agregarlo a la suma, suma = 1 + 132 + 13
1
significa mirar el primer dígito y agregarlo a la suma, suma = 1 + 132 + 13 + 1
4
significa mirar los "primeros 4 dígitos" y agregarlo a la suma, suma = 1 + 132 + 13 + 1 + 1321
Suma total = 1468
y esta es su salida
Casos especiales:
Si encontramos un 0
, entonces claramente mantenemos la suma igual
The number 1301 would have a sum = 1 + 130 + 1 = 132
Si encontramos un número que es más grande que la longitud de la entrada, lo agregamos todo
The number 251 would have a sum = 25 + 251 + 2 = 278
Casos de prueba:
collectiveSum(0) = 0
collectiveSum(2) = 2
collectiveSum(2315) = 23 + 231 + 2 + 2315 = 2571
La menor cantidad de bytes gana. ¡Feliz golf!
fuente
2315
caso de prueba le falta+ 2
el1
y debería resultar en2571
.2571
.Respuestas:
05AB1E ,
43 bytes-1 gracias a Kevin Cruijssen (uso de
€
evitar a}
)Pruébalo en línea!
¿Cómo?
fuente
ε£}
puede ser€£
guardar un byte.€
ya estuvo allí durante bastante tiempo en la versión heredada de 05AB1E antes de eso. Ya estaba allí cuando publiqué mi primera respuesta 05AB1E en abril de 2018. Por lo tanto, es posible que se haya agregado poco después de publicar esta respuesta, pero no estoy seguro.Python 2 , 43 bytes
Pruébalo en línea!
fuente
ValueError
entrada for1301
, o cualquier entrada que tenga un cero como uno de sus dígitos.int
función puede aceptar un número entero, reemplazando el'0'
literal de cadena por solo0
debería eliminar un byte.Python 2, 72 bytes
Primera presentación! ¡Gracias a @DestructibleLemon por la ayuda!
fuente
Haskell,
4337 bytesPruébalo en línea!
El número de entrada se toma como una cadena.
fuente
Ruby , 36 bytes
Pruébalo en línea!
fuente
#sum
no está definido en fixnums, así que supongo que quieresn
ser una cadena. Sin embargo,String#sum
calcula aynot a particularly good checksum
ignora el bloque que le da. Si quisiste decirn.chars.sum{
,Enumerable#sum
no está en el ruby stdlib, es una extensión proporcionada por rieles. Pruebe sus soluciones antes de publicarlas.Enumerable#sum
está en Ruby 2.4 , y TIO usa 2.4JavaScript,
4240 bytesGracias @Shaggy por jugar 2 bytes
Recibe la entrada como una cadena y devuelve un entero. Como está escrito actualmente, este código deja ceros a la izquierda en cualquier número entero.
fuente
x=>[...x].map(y=>a+=+x.slice(0,y),a=0)|a
R, 57 bytes
salvó uno más gracias a @Vlo
was: Guardado 4 bytes gracias a la sugerencia de @Robert Hacken.
Un enfoque de cuerda simple.
fuente
unlist
porel
.sum(strtoi(substring(i<-scan(,""),1,el(strsplit(i,"")))))
C (gcc) , 106 bytes
Pruébalo en línea!
fuente
Carbón de leña , 10 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
fuente
Octava , 56 bytes
Función anónima que toma una cadena como argumento de entrada y devuelve un número como salida.
Pruébalo en línea!
La versión más corta
funciona en Matlab, porque
char(0)
se trata como un espacio.fuente
Jalea ,
75 bytes-2 gracias a Dennis (cabeza vectorises>. <)
4 si podemos tomar listas de dígitos *
Pruébalo en línea!
* *
ḣ`ḌS
¿Cómo?
fuente
Perl 6 , 27 bytes
Pruébalo
Expandido:
fuente
C (gcc) ,
7775 bytesTiene que ser compilado con el
-lm
interruptor o GCC no reconoce las funciones matemáticas.Pruébalo en línea!
fuente
dc , 55 bytes
¡Sin cadenas ni matrices! De hecho, los dígitos requeridos se adquieren únicamente a través de la manipulación matemática.
Pruébalo en línea!
fuente
Casco , 6 bytes
Pruébalo en línea!
Explicación
fuente
J , 18 bytes
Explicación
Toma una cadena como entrada
Pruébalo en línea!
fuente
Japt, 5 bytes
Toma la entrada como una cadena.
Intentalo
Explicación
fuente
Stax , 6 bytes
Ejecútelo y depúrelo en línea
La representación ascii correspondiente del mismo programa es esta.
fuente
En realidad , 10 bytes
Pruébalo en línea!
Explicación
fuente
JavaScript, 43 bytes
Son más de las 3 de la mañana, ¿por qué sigo jugando al golf?
Toma la entrada como una cadena.
Pruébalo en línea
fuente
Perl 5, 26 bytes
Incluye
+1
parap
fuente
K4 , 22 bytes
Solución:
Ejemplos:
Explicación:
Irrumpir en base-10, tomar min de cada número y la longitud de la lista de esto. Convertir de nuevo y resumir.
fuente
Java 8, 92 bytes
Explicación:
Pruébalo en línea.
fuente
REXX 118 bytes
Pruébelo aquí
Proporcione el valor de entrada en la pestaña STDIN.
fuente
Python 3 , 66 bytes
Pruébalo en línea!
fuente
Jalea , 6 bytes
Pruébalo en línea!
Obtenga los
D
igits de la entrada, luego obtenga los primeros elementos [de cada dígito] de la entrada (ḣ
ead), luego eV
cada suma para que sea un número nuevamente yS
um.fuente