Erstellen Sie ein Programm, das alle in einer Zeichenfolge, die als Variable im Programm festgelegt ist, gefundenen Ganzzahlen summiert (das Programm muss also keine Eingaben verarbeiten). Die Ganzzahlen werden durch nicht numerische Zeichen getrennt (alles andere als 0, 1, 2, 3 ... 9).
Beispiele:
e7rde f ,fe 43 jfj 54f4sD
= 7 + 43 + 54 + 4 = 1085
= 564 545,5445-32JIFk0ddk
= 64 + 545 + 5445 + 32 + 0 = 60860ab0
= 0 + 0 = 0
Zusätzliche Hinweise:
- Unicode-Unterstützung ist nicht erforderlich, aber zulässig
-n
(wobein
eine ganze Zahl ist) wird nicht als Negativ gezähltn
, sondern als Bindestrich, gefolgt vonn
.
Die Antwort kann auf dem Bildschirm ausgedruckt werden (ist jedoch nicht erforderlich).
Kürzeste Antwort (in Zeichen) gewinnen.
5a-3
(mein Code würde überspringen,-
wenn er unmittelbar auf eine Zahl folgt, aber nicht, wenn davor eine Nicht-Zahl steht).Antworten:
Perl, 15
Eingabe in
$_
, Summe in$c
:quelle
Ruby 1.9, 21 Zeichen
Um die Lösung auf stdout auszudrucken, sind 2 zusätzliche Zeichen erforderlich:
Und um von stdin zu lesen, anstatt eine vordefinierte Variable zu verwenden, müssen weitere 3 Zeichen verwendet werden:
Für Ruby 1.8, ersetzen
?+
mit"+"
einer Arbeitslösung in 22 Zeichen zu erhalten.quelle
scan
kürzer alssplit
. So wird Ihre Lösungeval s.scan(/\d+/)*?+
- 21 Zeichen.scan
, danke!eval
und* '+'
Python (60)
quelle
Ruby -
3634 Zeichen36 Zeichen, wenn das Ergebnis gedruckt werden soll.
Angenommen, die Eingabe ist in s als Zeichenfolge vorhanden.
quelle
JavaScript (ES6), 30
Kommentierte Version:
quelle
Windows PowerShell, 23
252931Mit Ausgabe.
In der Tat, ohne Ausgabe ist genau das gleiche, würden Sie es nur an eine andere Stelle leiten, wo es benötigt wird.
quelle
J -
4038 ZeichenLazy version. Benötigt die String-Bibliothek.
quelle
Java
aus dem Wettbewerb;)
quelle
JavaScript [30 Bytes]
quelle
Labyrinth ,
2921 Bytes(Haftungsausschluss: Labyrinth ist neuer als diese Herausforderung.)
Da Labyrinth keine Variablen hat, habe ich ein normales Eingabe- / Ausgabeprogramm verwendet.
Dies war aufgrund der Funktionsweise der Labyrinth-Eingabebefehle recht einfach.
?
versucht, eine vorzeichenbehaftete Ganzzahl aus STDIN zu lesen, und stoppt bei der ersten Stelle, die keine Ziffer ist. Wenn eine Ganzzahl nicht gelesen werden kann (weil auf das nächste Zeichen-
keine Ziffer folgt oder keine andere Ziffer, oder wir haben EOF erreicht), wird0
stattdessen zurückgegeben.,
liest andererseits jedes nachfolgende Byte und schiebt den Bytewert. Wenn dieser bei EOF aufgerufen wird, wird er-1
stattdessen zurückgegeben.Hier ist ein Pseudocode für die Lösung:
Der richtige Umgang mit negativen Zahlen erschwert diese Lösung erheblich. Wenn diese nicht wären, hätte ich diese 8-Byte-Lösung:
quelle
PHP - 37
Ohne Druck;
Mit Aufdruck (38):
quelle
Perl, 16 Zeichen
Nimmt Input auf
$_
, Output geht weiter$r
. Letztes Semikolon ist überflüssig, wird aber wahrscheinlich benötigt, wenn das Programm mehr macht. Zursay$r
Ausgabe hinzufügen.quelle
wc -c
.J - 23 char
Kein Gewinner, aber wir sehen ein ziemlich seltenes Primitiv in Aktion.
Erklärt:
_"."0 y
-y
Versuchen Sie, jedes Zeichen in der Eingabezeichenfolge als Zahl einzulesen. Wenn Sie nicht können, verwenden Sie den Standardwert_
stattdessen (unendlich).,_=
- Überprüfen Sie jedes Ergebnis auf Gleichheit mit_
und führen Sie dann das letzte Array von 0s und 1s in einen Vektor aus. ("."0
Fügt dem Ergebnis immer eine zu viele Dimensionen hinzu, daher korrigieren wir das hier.)y,:' '
- Fügen Sie eine Zeile mit Leerzeichen unter der Eingabezeichenfolge ein.}
- Wird wie hier verwendet,}
heißt Item Amend und verwendet die Liste der 0en und 1en auf der linken Seite als Index, um die Zeile auszuwählen, aus der im rechten Argument gezeichnet werden soll. Was also passiert, ist, dass wir für jede Spalte auf der rechten Seite das Originalzeichen nehmen, wenn es als Zahl eingelesen werden kann, und ansonsten das Leerzeichen darunter. Daher überdecken wir nicht numerische Zeichen mit Leerzeichen.+/".
- Konvertieren Sie nun den gesamten String in eine Liste von Zahlen und addieren Sie diese.quelle
gs2, 4 bytes
Codiert in CP437 ; Das dritte Byte ist
E9
.W
Liest alle Zahlen/-?\d+/
aus einer Zeichenfolge,#Θ
ordnet Absolutwerte undd
Summen zu.(auch gs2 ist neuer als diese herausforderung, aber sein
read-nums
befehl ist ein totaler zufall.)quelle
Smalltalk (Smalltalk / X) (51 Zeichen)
mit dem Regex-Paket:
wo regex:
Eingabe in s
quelle
R 30
Hier
x
ist der Name der Variablen.Beispiel:
quelle
Javascript - 43 Zeichen
Ich weiß, es ist lang, aber es gab keine JS-Lösung, also :)
a
ist die Zeichenfolge.c
Antwort enthält.quelle
Tcl, 30
Es wird davon ausgegangen, dass sich die Eingabe in der Variablen befindet
$a
(formal ina
), und die Antwort wird im Interpreter-Ergebnis gespeichert. I / O bleibt als Übung übrig.quelle
C99 (mit Warnungen) 85
Um das Programm tatsächlich nutzen zu können, müssen Sie die Variable folgendermaßen zuweisen:
Wenn Sie gcc verwenden, müssen Sie es wie folgt als C99 kompilieren:
quelle
APL, 16 Bytes
⎕d
ist eine integrierte Funktion, die die Ziffern (0-9) enthält.b
wird einem Vektor von 0/1 zugewiesen, wobei den Zeichen, die Ziffern sind, 1 zugewiesen wird.b
wird verwendet, um das angegebene Zeichenarray zu komprimieren und es dann erneut zu erweitern, wodurch Leerzeichen eingefügt werden.⍎
ist die APL- Auswertung, die in diesem Fall einen String in einen Vektor mit ganzen Zahlen umwandelt.+/
berechnet die Summe.quelle
+/2⊃⍞⎕VFI⍨⎕AV~⎕D
Swift 3, 78
Wo
s
ist der String?quelle
Perl - 24 Zeichen
Eingabe erfolgt in $ _
quelle
Eigentlich 14 Bytes (nicht konkurrierend)
Probieren Sie es online!
Diese Einreichung ist nicht konkurrierend, da sie tatsächlich etwas neuer ist als diese Herausforderung.
Dieses Programm unterstützt die CP437-Codepage für die Eingabe.
Erläuterung:
quelle