Betrachten Sie einen Stream / eine Datei mit einer Ganzzahl pro Zeile. Beispielsweise:
123
5
99
Ihr Code sollte also die Summe dieser Zahlen ausgeben 227
.
Das Eingabeformat ist nur eine Ganzzahl pro Zeile. Sie können beispielsweise nicht davon ausgehen, dass sich die Eingabe in einer Zeile als Array von Ganzzahlen befindet.
Sie können entweder eine Eingabe von STDIN in Form eines Dateinamens oder einer Datei mit einem Namen Ihrer Wahl vornehmen. Sie können wählen, welche. Andere Eingabemethoden sind nicht zulässig.
Die Eingabe enthält mindestens eine Ganzzahl. Sie können davon ausgehen, dass alle Ganzzahlen nicht negativ sind und dass ihre Gesamtsumme kleiner als ist .232
code-golf
string
arithmetic
Dennis
quelle
quelle
Antworten:
05AB1E , 2 Bytes
Erläuterung:
Probieren Sie es online!
quelle
Bash + Coreutils, 16 Bytes
Probieren Sie es online!
Nach dem stehen zwei Leerzeichen
\
. Dies funktioniert auch für negative Zahlen.Erläuterung:
Sie fragen sich vielleicht, warum
tr \\n +|bc
es nicht besser ist, da es Zeilenumbrüche direkt in '+' umwandelt. Nun, das hat 2 unvorhergesehene Fehler:quelle
tr \\n +|bc
? Wenn ja, lesen Sie bitte die aktualisierte Erklärung. Gute Frage.paste -s -d+|bc
ist 15 Bytesxargs|tr \ +
In diesem Fall geschieht nichts, und bc empfängt die Nummer und druckt sie zurück.MATL , 2 Bytes
Dies erwartet die Eingabe in eine aufgerufene Textdatei
defin
.Gif oder es ist nicht passiert :
Oder versuchen Sie es online! ( Danke an Dennis für das Setup! )
Erläuterung
Wenn ein MATL-Programm ausgeführt wird und eine aufgerufene Datei
defin
gefunden wird (der Name bezieht sich auf "Standardeingabe"), wird der Inhalt automatisch als Text geladen und als Zeichenfolge in den Stapel geschrieben, bevor der Code ausgeführt wird.Die Funktion
U
wertet den String aus, um ihn in einen Spaltenvektor aus Zahlen zu konvertieren, unds
berechnet die implizit angezeigte Summe.quelle
Japt , 2 Bytes
Erläuterung
Probieren Sie es online!
quelle
Einfügen + Bc, 13 Bytes
Erläuterung:
Noch eine Shell-Antwort!
quelle
paste -s -d+|bc
und wusste nicht, dass ich die Schalter konsolidieren konnte. Ordentlich!Perl 6 , 13 Bytes
Versuch es
Erläuterung
lines()
Gibt eine Liste von Zeilen$*IN
oder$*ARGFILES
ein "magisches" Befehlszeilen-Eingabehandle zurück.sum(…)
wurde 6 bis Perl hinzugefügt , damit[+] List
für Positionals optimiert werden , die wie ihre Summe ohne alle ihre Werte zu erzeugen berechnen kann1..100000
(ich dachte nur
sum
einfach zu nett hier war Gebrauch ,[+]
wie ich normalerweise tun würde)say(…)
Rufen Sie die.gist
Methode für ihre Eingabe auf und drucken Sie sie mit einer zusätzlichen Newline.quelle
$a+=$_ for <>;print $a
funktioniert in Perl 5, aber es kann einen kürzeren Weg geben.C 53 Bytes
quelle
Python 3 , 28 Bytes
Aus diesem Tipp entnommen . Mir wurde gesagt, dass dies unter Windows nicht funktioniert.
Probieren Sie es online!
quelle
Retina ,
117 Bytes-4 Danke an Martin Ender
Probieren Sie es online!
In Unary konvertieren:
Zähle die Anzahl der
1
s:quelle
Brain-Flak , 20 Bytes
Probieren Sie es online!
Erläuterung
Dies ist ein Golf aus einer Lösung von Riley im Chat . Seine Lösung war:
Wenn Sie mit Brain-Flak vertraut sind, ist dies ziemlich selbsterklärend. Die Stapelhöhe wird verschoben und beim Herunterzählen wird ein Wert eingefügt. Am Ende wird die Summe aller Läufe verschoben.
Es ist ein ziemlich guter Golf, aber er setzt beide Nullen
{}
und([])
diese Werte unterscheiden sich nur um eins. Wenn wir stattdessen die Masken entfernen und eines der beiden Negative machen, sollten sie sich fast aufheben.Da sie sich immer um eins unterscheiden, haben wir den unglücklichen Umstand, dass unsere Antwort immer von der Stapelhöhe abweicht. Um dem abzuhelfen, verschieben wir einfach den Beginn des Schiebevorgangs, um die erste Stapelhöhe zu erfassen.
quelle
Python 2, 40 Bytes
quelle
R, 11 Bytes
scan
Nimmt die Eingabe, eine Nummer pro Zeile. Undsum
naja, Summen.quelle
Perl 5 , 9 Bytes
8 Byte Code +
-p
Flag.Probieren Sie es online!
Mit
-p
wird der Eingang zeilenweise gelesen und jeweils gespeichert$_
. Wir verwenden es$\
als Akkumulator, weil es dank der-p
Flagge implizit am Ende gedruckt wird. Die nicht übereinstimmenden}{
werden verwendet, so dass das-p
Flag nur$\
einmal am Ende gedruckt wird, anstatt zu drucken,$_
und$\
an jeder Zeile wird es so gelesen, wie es normalerweise der Fall ist.quelle
)(
accolades
anscheinend.Pure Bash,
3736 BytesDanke an @KevinCruijssen für ein Byte!
Probieren Sie es online!
quelle
do ((
? Das TIO scheint zu funktionieren.Haskell, 32 Bytes
Probieren Sie es online! .
interact
sammelt die gesamte Eingabe von stdin, übergibt sie an die als Argument angegebene Funktion und gibt die Zeichenfolge aus, die sie von dieser Funktion zurückerhält. Die Funktion ist:quelle
lines.map(_.toInt)
weil sum eine Art implizite numerische Konvertierung von String oder in diesem Fall eine explizite erwartet.PHP, 22 Bytes
Dies setzt voraus, dass es eine Datei mit dem Namen "t" mit einer Liste von ganzen Zahlen gibt.
file()
öffnet eine Datei und gibt ein Array zurück, wobei jede Zeile ein separates Element im Array enthält.array_sum()
summiert alle Elemente in einem Array.quelle
Awk, 19 Bytes
Erläuterung:
quelle
{s+=$1}END{print s}
:)Gleichstrom , 14 Bytes
Probieren Sie es online!
Erläuterung:
quelle
CJam , 5 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
1b
summiert man Zahlen?[<x> <y> <z> <w>]<b>b
berechnet einfach b³x + b²y + bz + w . Wenn b = 1 ist , ergibt dies x + y + z + w .Python,
3830 BytesIn Python werden Dateien
open('filename')
(offensichtlich) von geöffnet . Sie sind jedoch iterables. Jedes Mal, wenn Sie die Datei durchlaufen, wird die nächste Zeile angezeigt. Also iteriert Map über jede Liste, ruft sieint
auf und summiert dann die resultierende Liste.Rufen Sie mit dem Dateinamen als Eingabe auf. (dh
f('numbers.txt')
)8 Bytes gespart durch Verwendung
map(int, open(n))
eines Listenverständnisses. Originalcode:quelle
Mathematica, 19 Bytes
Übernimmt die Notebook-Umgebung von Mathematica.
Erwartet, dass sich die Eingabe in einer Datei befindet
a
.quelle
Total @ Flatten @ Import @ "a"
oder sogar schreiben"a" // Import // Flatten // Total
. ;)Tr[#&@@@Import@#]&
auch erlaubt?Gelee ,
98 BytesSTDIN ist nicht wirklich Jellys Sache ...
Probieren Sie es online!
Wie es funktioniert
quelle
F
könnteṖ
aus Gründen der Klarheit auch eine sein.Brachylog , 4 Bytes
Probieren Sie es online!
Erläuterung
quelle
Pure Bash, 30
Probieren Sie es online aus.
read
s die Eingabedatei auf einmal in die Variableb
.-d_
sagt,read
dass der Zeilenbegrenzer_
statt istnewline${b//'
newline'/+}
ersetzt die Zeilenumbrücheb
durch+
echo $[ ... ]
wertet den resultierenden Ausdruck arithmetisch aus und gibt ihn aus.quelle
$[]
Abschnitt aufgrund eines nachgestellten "+" fehlerhaft.read
abschließende Zeilenumbrüche verworfen, obwohl der Zeilenbegrenzer auf überschrieben ist_
. Dies ist vielleicht eine Einschränkung vonread
, aber es funktioniert gut für diese Situation.Vim, 16 Bytes / Tastenanschläge
Da V abwärtskompatibel ist, können Sie es online ausprobieren!
quelle
Pyth , 3 Bytes
Probieren Sie es online!
quelle
jq , 5 Bytes
add
, sowie das Kommandozeilen-Flag-s
.Beispielsweise:
quelle
-sadd
nicht funktioniert, zähle den Raum.add
(3 Bytes) und du musst 2 Bytes für das Flag hinzufügen-s
. Das Leerzeichen zählt nicht als Code oder Flag: Es ist das von der Sprache verwendete Befehlszeilentrennzeichen.-s
flag ist die Abkürzung für " --slurp " (liest den gesamten Eingabestream in ein großes Array und führt den Filter nur einmal aus), wodurch sich sowohl diejq
Interpretation der Eingabedaten als auch die Ausführung des Codes ändern . Es ist nicht wie das,-e
insed
dem nur gesagt wird,sed
dass der nachfolgende String Code ist. Das-s
ist mehr wie ein Teil derjq
Sprache selbst, und daher wäre dieser 6. Byte-Raum auch.Eigentlich 2 Bytes
Probieren Sie es online!
Erläuterung:
quelle
dc, 22
Dies scheint etwas länger zu dauern, aber es ist schwierig zu entscheiden, wann das Ende der Datei erreicht ist. Die einzige Möglichkeit, die ich mir vorstellen kann, besteht darin, die Stack-Länge nach dem
?
Befehl zu überprüfen .Probieren Sie es online aus .
Beachten Sie, dass das Makro
m
rekursiv aufgerufen wird. Moderndc
implementiert die Schwanzrekursion für diese Art von Dingen, daher sollte es keine Sorgen geben, dass der Stapel überfüllt wird.quelle
Pyke , 4 Bytes
Probieren Sie es online!
quelle