Drucken Sie unter Angabe einer Nummer die „Gesamtsumme“ aus.

20

Geben Sie eine Zahl als Eingabe ein und drucken Sie die Gesamtsumme aus

Was ist eine kollektive Summe?

Betrachten Sie die Zahl 13214, die Eingabe

Durchlaufen Sie jede der Ziffern ab der linken Seite, um die Gesamtsumme zu erhalten.

1 bedeutet, schauen Sie sich die erste Ziffer an und addieren Sie sie zur Summe, Summe = 1

3 bedeutet, schauen Sie sich die "ersten 3 Ziffern" an und addieren Sie sie zur Summe, Summe = 1 + 132

2 bedeutet, schauen Sie sich die "ersten 2 Ziffern" an und addieren Sie sie zur Summe, Summe = 1 + 132 + 13

1 Das heißt, Sie sehen sich die erste Ziffer an und addieren sie zur Summe, Summe = 1 + 132 + 13 + 1

4 bedeutet, schauen Sie sich die "ersten 4 Ziffern" an und addieren Sie sie zur Summe, Summe = 1 + 132 + 13 + 1 + 1321

Gesamtsumme = 1468und dies ist Ihre Ausgabe


Spezialfälle:

Wenn wir auf eine stoßen 0, halten wir die Summe natürlich gleich

The number 1301 would have a sum = 1 + 130 + 1 = 132

Wenn wir auf eine Zahl stoßen, die größer ist als die Länge der Eingabe, addieren wir alles

The number 251 would have a sum = 25 + 251 + 2 = 278

Testfälle:

collectiveSum(0) = 0

collectiveSum(2) = 2

collectiveSum(2315) = 23 + 231 + 2 + 2315 = 2571

Die kürzeste Anzahl von Bytes gewinnt. Viel Spaß beim Golfen!

K X teilen
quelle
6
Wie oft stellt sich bei solchen Aufgaben die Frage: Dürfen wir eine Liste der Ziffern als Eingabe akzeptieren?
Jonathan Allan
7
Dem 2315Testfall fehlt der + 2aus 1und sollte ergeben 2571.
Jonathan Allan
Müssen wir uns mit Eingaben beschäftigen, die mit 0 beginnen, abgesehen von 0? Wie soll das Programm mit diesen Eingaben umgehen?
fənɛtɪk
Es sieht so aus, als ob der letzte Testfall falsch ist. sollte sein 2571.
Shaggy
Ich verstehe nicht, warum die Eingabe eher eine Zahl als eine Liste von ganzen Zahlen sein sollte. Es scheint eine unnötig umständliche Form der Eingabe zu sein.
Weizen-Assistent

Antworten:

7

05AB1E ,  4  3 Bytes

-1 dank Kevin Cruijssen (Verwendung von a zu vermeiden })

€£O

Probieren Sie es online!

Wie?

€£O - implicit input   e.g. 2315
€   - map with:
 £  -   head to             23, 231, 2, 2315
  O - sum                   2571
Jonathan Allan
quelle
Schlage mich um 13 Sekunden xD
Magic Octopus Urn
Ich bin froh, dass ich darauf gewartet habe, den Link zu den Bytes hinzuzufügen: p
Jonathan Allan
ε£}kann sein €£, ein Byte zu speichern.
Kevin Cruijssen
@ KevinCruijssen War das auch eine Option, als ich das erstellt habe?
Jonathan Allan
@ JonathanAllan Bin mir nicht ganz sicher, aber ich denke es war ja schon. Adnan begann im Sommer 2018 (der im August veröffentlicht wurde) mit dem Schreiben des Elixir- Rewrites und war bereits eine Weile in der älteren Version von 05AB1E davor dabei. Es war bereits da, als ich meine allererste 05AB1E-Antwort im April 2018 veröffentlichte. Es ist also möglich, dass es kurz nach dem Posten dieser Antwort hinzugefügt wurde, aber ich bin mir nicht sicher.
Kevin Cruijssen
5

Python 2 , 43 Bytes

lambda n:sum(int('0'+n[:int(x)])for x in n)

Probieren Sie es online!

Nur ASCII
quelle
Leider scheint dies eine ValueErrorfor-Eingabe von 1301oder eine Eingabe mit einer Null als einer ihrer Ziffern auszulösen.
Mathmandan
@mathmandan Sollte jetzt behoben werden?
Nur ASCII
Die intFunktion kann eine Ganzzahl akzeptieren, wobei das '0'Zeichenfolgenliteral durch 0ein Byte ersetzt werden muss.
MooseOnTheRocks
@MooseOnTheRocks Hat auf eine Art und Weise funktioniert, die mir weniger hackig vorkommt (?), Es sei denn, ich bin dumm und habe (normalerweise) etwas durcheinander gebracht
ASCII
4

Python 2, 72 Bytes

Erste Einreichung! Danke an @DestructibleLemon für die Hilfe!

import sys;d=sys.argv[1];s=0;for e in d:s+=int(d[:int(e)]);print str(s)
Allen Fisher
quelle
Nur damit Sie wissen, scheint das Downvote vom Community-Benutzer automatisch vergeben worden zu sein, als ich den Header Ihres Posts bearbeitet habe. Es tut uns leid. Es ist eine nervige, unsinnige Funktion . Obwohl ich nicht weiß, warum es diesmal geschah, da dies, soweit ich das beurteilen kann, nicht als minderwertig eingestuft wurde.
Steadybox
Willkommen bei PPCG! Schöne erste Einreichung! Und ja, wie Steadybox sagte, wurde das Downvote automatisch ohne besonderen Grund platziert. Dein Post hat ein paar Upvotes bekommen, also sollte die automatische Downvote beim nächsten Cron Job entfernt werden :)
HyperNeutrino
3

Haskell, 43 37 Bytes

f l=sum[read$'0':take(read[d])l|d<-l]

Probieren Sie es online!

Die eingegebene Nummer wird als Zeichenfolge verwendet.

   [        |d<-l]      -- for every digit d in the input string
        read[d]         -- convert to a number
      take     l        -- and take that many digits from l
     0:                 -- prepend a 0 (to handle 0s)
   read                 -- convert to a number
sum                     -- sum all numbers
nimi
quelle
3

Ruby , 36 Bytes

->n{n.sum{|x|n[0,x.to_i].join.to_i}}

Probieren Sie es online!

Nur ASCII
quelle
#sumist nicht auf fixnums definiert, also nehme ich an, dass Sie neine Zeichenfolge sein möchten . Jedoch String#sumberechnet ein not a particularly good checksumund ignoriert den Block geben Sie es. Wenn Sie meinten n.chars.sum{, Enumerable#sumist es nicht in der ruby ​​stdlib, es ist eine Erweiterung, die durch Schienen bereitgestellt wird. Bitte testen Sie Ihre Lösungen, bevor Sie sie veröffentlichen.
Shelvacu
@Shelvacu Ja, ich nehme allerdings Eingaben als Array ... siehe die bereitgestellte Fußzeile. Plus Enumerable#sumist in Ruby 2.4 und TIO verwendet 2.4
ASCII
31 Bytes, wenn Sie ein Array von Ziffern als Eingabe nehmen
Asone Tuhid
@AsoneTuhid Ich glaube nicht, dass dies eine gültige Form der Eingabe ist. Wenn Sie andere Beweise finden, erläutern Sie dies bitte
ASCII
Diese Seite scheint das Problem nicht zu lösen, aber ich sehe keine Liste von Ganzzahlen, die sich zu stark von einer Liste von Zeichen unterscheidet (was Ihre Antwort als Eingabe
akzeptiert
3

JavaScript, 42 bis 40 Bytes

Vielen Dank an @Shaggy für das Golfen mit 2 Bytes

f=
x=>[...x].map(y=>a+=+x.slice(0,y),a=0)|a

console.log(f("2315"))
console.log(f("0100"))
console.log(f("2"))
console.log(f("01025"))

Erhält Eingaben als Zeichenfolge und gibt eine Ganzzahl zurück. Wie derzeit geschrieben, hinterlässt dieser Code führende Nullen in allen Ganzzahlen.

fəˈnəˈtɛk
quelle
40 Bytes:x=>[...x].map(y=>a+=+x.slice(0,y),a=0)|a
Shaggy
3

R, 57 Bytes

hat dank @Vlo noch eins gespart

sum(strtoi(substring(i<-scan(,""),1,el(strsplit(i,"")))))

was: 4 Bytes gespart dank @Robert Hackens Vorschlag.

i=scan(,"");sum(strtoi(substring(i,1,el(strsplit(i,"")))))

Ein einfacher String-Ansatz.

Zahiro Mor
quelle
1
Sie können 4 Bytes einsparen, indem Sie unlistdurch ersetzen el.
Robert Hacken
1
Speichern Sie 1 mit Inline-Zuordnungsum(strtoi(substring(i<-scan(,""),1,el(strsplit(i,"")))))
Vlo
2

C (gcc) , 106 Bytes

j,k,c,t;f(char*S){for(t=j=0;S[j];j++)c=S[k=S[j]-48<(c=strlen(S))?S[j]-48:c],S[k]=0,t+=atoi(S),S[k]=c;S=t;}

Probieren Sie es online!

Jonathan Frech
quelle
2

Kohle , 10 Bytes

IΣIEθ✂θ⁰Iι

Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:

   Eθ       Map over input string
        Iι  Cast current character to integer
     ✂θ⁰    Slice input string to that length
 ΣI         Cast slices to integer and take the sum
I           Cast result to string and implicitly print
Neil
quelle
Haha, ich hatte genau das Gleiche
ASCII
2

Oktave , 56 Bytes

@(n)sum(str2num(['' 32+char(n.*(find(n)<=(n'-48))-32)]))

Anonyme Funktion, die eine Zeichenfolge als Eingabeargument und eine Zahl als Ausgabe zurückgibt.

Probieren Sie es online!

Die kürzere Version

@(n)sum(str2num(['' char(n.*(find(n)<=(n'-48)))]))

arbeitet in Matlab, weil char(0)es als Leerzeichen behandelt wird.

Luis Mendo
quelle
2

Gelee ,  7  5 Bytes

-2 dank Dennis (Kopf vektorisiert>. <)

4 wenn wir Ziffernlisten nehmen dürfen *

Dḣ`ḌS

Probieren Sie es online!

* ḣ`ḌS

Wie?

Dḣ`ḌS - Link: integer, n   e.g. 2315
D     - to decimal list         [2,3,1,5]
  `   - repeat left as right    [2,3,1,5]
 ḣ    - head                    [2,3], [2,3,1], [2], [2,3,1,5]
   Ḍ  - from decimal lists      23, 231, 2, 2315
    S - sum                     2571
Jonathan Allan
quelle
2

Perl 6 , 27 Bytes

{sum $_ X[&substr]^«.comb}

Probier es aus

Erweitert:

{  # bare block lambda with implicit param 「$_」

  sum

    $_           # the input

      X[&substr] # crossed using &substr sub as if it was an infix operator

    \          # upto 「^」 for each of the following 「«」 (creates Range objects)
    .comb        # the input split into digits (implicit method call on 「$_」
}
Brad Gilbert b2gills
quelle
2

C (gcc) , 77 75 Bytes

Muss mit dem -lmSchalter kompiliert werden oder GCC erkennt die mathematischen Funktionen nicht.

r,q,i;f(n){for(r=0,i=n;i;i/=10)q=log10(n)+1-i%10,r+=n/pow(10,q>0?q:0);n=r;}

Probieren Sie es online!

Gastropner
quelle
2

dc , 55 Bytes

[0*]sq?dsfZ1-se[lfddZrIle^/I%-d0>qIr^/+led1-se0<a]dsaxp

Keine Zeichenfolgen oder Arrays! In der Tat werden die erforderlichen Ziffern nur durch mathematische Manipulation erfasst.

Probieren Sie es online!

R. Kap
quelle
1

Schale , 6 Bytes

ṁd´M↑d

Probieren Sie es online!

Erläuterung

ṁd´M↑d  -- example input: 1301
     d  -- decimal digits: [1,3,0,1]
  ´M    -- map over it using it as argument (example with 3):
    ↑   -- | take: [1,3,0]
        -- : [[1],[1,3,0],[],[1]]
ṁ       -- map and then sum the result (example on [1,3,0]):
 d      -- | as decimal: 130
        -- : 1 + 130 + 0 + 1 = 132
ბიმო
quelle
1

J , 18 Bytes

[:+/"."0".@{."0 1]

Erläuterung

Nimmt einen String als Eingabe

           {."0 1  - take
    "."0           - current char as int items
                 ] - from the argument
         ".        - and convert them to an integer  
[:+/               - add them up

Probieren Sie es online!

Galen Ivanov
quelle
1

Japt, 5 Bytes

Übernimmt die Eingabe als Zeichenfolge.

¬x@¯X

Versuch es


Erläuterung

          :Implicit input of integer string U
¬         :Split to an array of characters/digits
  @       :Pass each X through a function
   ¯X     :Slice U from the first to the Xth character
 x        :Reduce by addition
Zottelig
quelle
O_o Entweder ist Japt richtig golfen oder ich mache eigentlich falsch
ASCII
2
@ Nur ASCII: Japt ist viel "golfiger" als die meisten Leute glauben; Wir gewinnen unseren fairen Anteil an Herausforderungen und schlagen sogar Charcoal und SOGL bei einer kürzlichen Herausforderung im Bereich Asci -Art .
Shaggy
@ Shaggy Sicher, aber ich wusste nicht, dass es Jelly / Actually / 05AB1E Level Golf ist
ASCII
@ ASCII-only: Oh, ja, es ist definitiv eine gute Sache für sie :) Wenn Sie interessiert sind, schauen Sie sich unsere Sprache des Monats nom an. oder schau mal in den Japt Chatroom und wir geben dir eine Tour.
Shaggy
1

Stax , 6 Bytes

ç╫&º±å

Führen Sie es online aus und debuggen Sie es

Dies ist die entsprechende ASCII-Darstellung desselben Programms.

EZFy(e+

E        get array of digits
 Z       push 0 under array of digits
  F      for each digit, run the rest of the program
   y     input as a string
    (    get start of string for specified number of characters
     e   evaluate substring as integer
      +  add
rekursiv
quelle
0

Eigentlich 10 Bytes

╝ß⌠≈╛H≈⌡MΣ

Probieren Sie es online!

Erläuterung

╝          Push input to register 1
 ß         Push n-th input (0 by default)
        M  Map
  ⌠    ⌡   Function
   ≈       Cast current character of input to int
    ╛      Get value of register 1 (input)
     H     Push input[:current character]
      ≈    Cast to int
         Σ Sum
Nur ASCII
quelle
0

JavaScript, 43 Bytes

Es ist gut nach 3 Uhr morgens, warum spiele ich noch Golf ?!

Übernimmt die Eingabe als Zeichenfolge.

s=>(g=x=>s[x]?+s.slice(0,s[x])+g(++x):0)(0)

Probieren Sie es online aus

Zottelig
quelle
0

Perl 5, 26 Bytes

Enthält +1fürp

perl -pE 's%.%/.{0,$&}/;$\+=$&%eg}{' <<< 2315; echo
Tonne Hospel
quelle
0

K4 , 22 Bytes

Lösung:

+/10/:'(x&#x)#\:x:10\:

Beispiele:

q)k)+/10/:'(x&#x)#\:x:10\:13214
1468
q)k)+/10/:'(x&#x)#\:x:10\:1301
132
q)k)+/10/:'(x&#x)#\:x:10\:251
278
q)k)+/10/:'(x&#x)#\:x:10\:2315
2571

Erläuterung:

Brechen Sie in die Basis 10 ein, nehmen Sie von jeder Zahl min und daraus die Länge der Liste. Rechne zurück und fasse zusammen.

+/10/:'(x&#x)#\:x:10\: / the solution
                  10\: / to base 10, 123 => 1 2 3
                x:     / save as x
             #\:       / take (#) each left
       (    )          / the left
          #x           / count (#) length of x
        x&             / min of x and the length
  10/:'                / from base 10 each
+/                     / sum up the results
Streetster
quelle
0

Java 8, 92 Bytes

n->n.chars().map(c->(c-=48)>0?new Integer(n.substring(0,c<n.length()?c:n.length())):0).sum()

Erläuterung:

Probieren Sie es online aus.

n->                                  // Method with String parameter and int return-type
  n.chars()                          //  Loop over the characters
   .map(c->(c-=48)                   //   Convert character to digit
        >0?                          //    And if it's larger than 0
         new Integer(n.substring(0,  //     Take the first `x` digits, where `x` is:
          c<n.length()?              //      If the digit higher than the total a.o. digits
           c                         //       Take the first `c` digits
          :                          //      Else:
           n.length()))              //       Take all digits
         :                           //    Else:
          0)                         //     Take 0
   .sum()                            //   And sum everything
Kevin Cruijssen
quelle
0

REXX 118 Bytes

pull n                           
l=length(n)                      
a=0                              
j=1                              
do while (j<=l)                  
if substr(n,j,1)==0 then m=0;    
else m=substr(n,1,substr(n,j,1));
a=a+m                            
j=j+1                            
end                              
say a                                 

Versuchen Sie es hier.
Geben Sie auf der Registerkarte STDIN einen Eingabewert ein.

Srinivasan JV
quelle
0

Gelee , 6 Bytes

DµḣµVS

Probieren Sie es online!

Holen Sie sich die DZiffern der Eingabe, dann holen Sie sich die ersten [jede Ziffer] Elemente der Eingabe ( ead), dann Valle Summen, um es wieder eine Zahl zu machen und Sum.

chromaticiT
quelle