Étant donné un nombre en entrée, imprimez sa somme collective
Qu'est-ce qu'une somme collective?
Considérez le nombre 13214
, l'entrée
En parcourant chacun des chiffres à partir de la gauche, nous pourrons obtenir sa somme collective.
1
signifie regarder le premier chiffre et l'ajouter à la somme, somme = 1
3
signifie regarder les "3 premiers chiffres" et les ajouter à la somme, somme = 1 + 132
2
signifie regarder les "2 premiers chiffres" et les ajouter à la somme, somme = 1 + 132 + 13
1
signifie regarder le premier chiffre et l'ajouter à la somme, somme = 1 + 132 + 13 + 1
4
signifie regarder les "4 premiers chiffres" et les ajouter à la somme, somme = 1 + 132 + 13 + 1 + 1321
Somme totale = 1468
et ceci est votre sortie
Cas spéciaux:
Si nous rencontrons un 0
, alors nous gardons clairement la même somme
The number 1301 would have a sum = 1 + 130 + 1 = 132
Si nous rencontrons un nombre plus grand que la longueur de l'entrée, nous ajoutons tout
The number 251 would have a sum = 25 + 251 + 2 = 278
Cas de test:
collectiveSum(0) = 0
collectiveSum(2) = 2
collectiveSum(2315) = 23 + 231 + 2 + 2315 = 2571
Le nombre d'octets le plus court gagne. Bon golf!
la source
2315
cas de test ne contient pas+ 2
le1
et devrait se traduire par2571
.2571
.Réponses:
05AB1E ,
43 octets-1 merci à Kevin Cruijssen (utilisation d'
€
éviter a}
)Essayez-le en ligne!
Comment?
la source
ε£}
peut être€£
de sauvegarder un octet.€
était déjà là depuis un certain temps dans la version héritée de 05AB1E avant cela. Elle était déjà là lorsque j'ai posté ma toute première réponse 05AB1E en avril 2018. Il est donc possible qu'elle ait été ajoutée peu de temps après avoir posté cette réponse, mais je ne suis pas sûr.Python 2 , 43 octets
Essayez-le en ligne!
la source
ValueError
pour l'entrée de1301
, ou toute entrée qui a un zéro comme l'un de ses chiffres.int
fonction peut accepter un entier, en remplaçant le'0'
littéral de chaîne par juste0
devrait raser un octet.Python 2, 72 octets
Première soumission! Merci à @DestructibleLemon pour l'aide!
la source
Haskell,
4337 octetsEssayez-le en ligne!
Le numéro d'entrée est considéré comme une chaîne.
la source
Rubis , 36 octets
Essayez-le en ligne!
la source
#sum
n'est pas défini sur les fixnums, donc je suppose que vous voulezn
être une chaîne. Cependant,String#sum
calcule anot a particularly good checksum
et ignore le bloc que vous lui donnez. Si vous vouliez diren.chars.sum{
,Enumerable#sum
n'est pas dans le stdlib rubis, c'est une extension fournie par des rails. Veuillez tester vos solutions avant de les publier.Enumerable#sum
est dans Ruby 2.4 et TIO utilise 2.4JavaScript,
4240 octetsMerci @Shaggy d'avoir joué au golf sur 2 octets
Reçoit l'entrée sous forme de chaîne et renvoie un entier. Tel qu'il est actuellement écrit, ce code laisse des zéros non significatifs sur tous les entiers.
la source
x=>[...x].map(y=>a+=+x.slice(0,y),a=0)|a
R, 57 octets
encore sauvé grâce à @Vlo
était: enregistré 4 octets grâce à la suggestion de @Robert Hacken.
Une approche de chaîne simple.
la source
unlist
parel
.sum(strtoi(substring(i<-scan(,""),1,el(strsplit(i,"")))))
C (gcc) , 106 octets
Essayez-le en ligne!
la source
Fusain , 10 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
la source
Octave , 56 octets
Fonction anonyme qui prend une chaîne comme argument d'entrée et renvoie un nombre en sortie.
Essayez-le en ligne!
La version plus courte
fonctionne dans Matlab, car il
char(0)
est traité comme un espace.la source
Gelée ,
75 octets-2 merci à Dennis (tête vectorise>. <)
4 si nous pouvons prendre des listes de chiffres *
Essayez-le en ligne!
*
ḣ`ḌS
Comment?
la source
Perl 6 , 27 octets
Essaye-le
Étendu:
la source
C (gcc) ,
7775 octetsDoit être compilé avec le
-lm
commutateur ou GCC ne reconnaît pas les fonctions mathématiques.Essayez-le en ligne!
la source
cc , 55 octets
Pas de chaînes ni de tableaux! En effet, les chiffres requis sont acquis uniquement par manipulation mathématique.
Essayez-le en ligne!
la source
Husk , 6 octets
Essayez-le en ligne!
Explication
la source
J , 18 octets
Explication
Prend une chaîne en entrée
Essayez-le en ligne!
la source
Japt, 5 octets
Prend l'entrée sous forme de chaîne.
Essayez-le
Explication
la source
Stax , 6 octets
Exécutez-le et déboguez-le en ligne
La représentation ascii correspondante du même programme est la suivante.
la source
En fait , 10 octets
Essayez-le en ligne!
Explication
la source
JavaScript, 43 octets
C'est bien après 3 heures du matin, pourquoi suis-je encore en train de jouer au golf?!
Prend l'entrée sous forme de chaîne.
Essayez-le en ligne
la source
Perl 5, 26 octets
Comprend
+1
pourp
la source
K4 , 22 octets
Solution:
Exemples:
Explication:
Divisez en base 10, prenez min de chaque nombre et la longueur de la liste à partir de cela. Reconvertissez et résumez.
la source
Java 8, 92 octets
Explication:
Essayez-le en ligne.
la source
REXX 118 octets
Essayez-le ici
Fournissez la valeur d'entrée dans l'onglet STDIN.
la source
Python 3 , 66 octets
Essayez-le en ligne!
la source
Gelée , 6 octets
Essayez-le en ligne!
Obtenez les
D
chiffres de l'entrée, puis obtenez les premiers [chaque chiffre] éléments de l'entrée (ḣ
ead), puis eV
al chaque somme pour en faire à nouveau un nombre etS
euh.la source