Problem:
Ermitteln Sie bei einer gegebenen Anzahl von Ganzzahlen die Summe aller positiven Ganzzahlen.
Eingang:
- t - Anzahl der Testfälle [ t <1000]
- In jeder der nächsten t Zeilen eine ganze Zahl N [-1000 ≤ N ≤ 1000]
Ausgabe
Das Programm sollte die Summe aller positiven ganzen Zahlen ausgeben.
Überprüfen Sie Ihren Code in Online-Richter
Ergebnis
Die Punktzahl entspricht der Größe des Quellcodes Ihres Programms, mit Ausnahme von Symbolen mit ASCII-Code ≤ 32.
Hier ist die Liste der besten Punkte: Python- Bestnoten ( Bestnote: 29)
code-challenge
gmunkhbaatarmn
quelle
quelle
T
(Anzahl der ... errr ... Zahlen (?)) Keine Option ist, da die Testfälle zusätzliche Daten nach denT
Zahlen enthalten ... Ihr Code schlägt bei SPOJ fehl. Jeder (3 Antworten unten) schien die erste Ganzzahl geschickt übersprungen zu haben.Antworten:
Leerzeichen, 0
Ich konnte nicht widerstehen.
S
= Leerzeichen,T
= Tabulator,N
= Zeilenvorschub, alle haben ASCII-Codes <= 32.Base64-codiert für einfaches Kopieren und Einfügen.
quelle
S
in der Binärcodierung einer Zahl entfernt werden. Diese sind alle in Push-number-to-Stack Anweisungen der FormSSSS...N
, in der die vierteS
Codes überflüssig führende 0. (Natürlich ist dies keine Auswirkungen auf die Partitur hat.)Element, 17 Zeichen plus 1 Leerzeichen
Dies ist meine erste konstruierte Sprache. Es ist sehr kompakt und für den Menschen lesbar. Alle Anweisungen sind ein Zeichen lang und führen eine einzelne Funktion aus.
Element hat zwei Stapel und einen Hash als Speicherstrukturen. Die beiden Stapel werden als Hauptstapel und Kontrollstapel bezeichnet. Im Hauptstapel werden Arithmetik, E / A und Hash-Manipulationen ausgeführt. Der Steuerungsstapel ist der Ort, an dem Logikoperationen stattfinden, und dieser Stapel steuert die while- und for-Schleifen.
Die Grundidee hinter Element ist, dass es einen Hash gibt, der Zahlen / Strings speichert, während der Stack verwendet wird, um Berechnungen mit diesen Zahlen durchzuführen. Die Ergebnisse dieser Berechnung können dann für die zukünftige Verwendung einer bestimmten Stelle im Hash zugewiesen werden. Die verschiedenen Inhalte des Hashs werden als Elemente bezeichnet. Sie ähneln also einem Array, können jedoch nicht numerische Namen haben.
EDIT: Einen Interpreter für Element (geschrieben in Perl) finden Sie hier .
Hier ist die Liste der Operatoren: In einigen dieser Beispiele stehen m und n für Zahlen, die sich bereits auf dem Stapel befinden.
Hier ist eine exemplarische Vorgehensweise, wie das Programm funktioniert:
quelle
Perl, 31
quelle
say
ein bisschen kürzer werden? Es würde mit den 29 Charakteren am besten übereinstimmen.say
es nicht integriert ist und (zumindest) eine Befehlszeilenoption erfordert, die für die Anzahl der Zeichen berücksichtigt wird.$\
verwendet wird$i
:<>;$\+=$_*($_>0)while<>;print
Ruby 1.9.2, 37
Rufe wie ruby scriptname file_with_ints auf.
quelle
Rubin, 52
quelle
s
.Haskell, 58
Funktioniert nur ordnungsgemäß
t
ganzen Zahlen. Ich habe es nicht gegen Spoj laufen lassen, weil ich es einfach nicht mag, mich dort zu registrieren.quelle
t
ganze Zahlen"?Code ein C 89 Zeichen
Ich habe viel versucht, meinen Code auf weniger als 63 Bytes zu reduzieren, aber ich kann ihn nur auf 89 Bytes reduzieren. Bitte helfen Sie mir, es auf 63 Bytes oder noch weniger zu reduzieren.
quelle
return 0;
ist nicht erforderlich, derfor
Zyklus kann auffor(scanf(x,&t);t--;scanf(x,&a),a>0?b+=a:a);
== verkleinert werden, wodurch 78 Zeichen ...error: initializer element is not computable at load time x="%d"
Perl, 33
Obwohl der Raum notwendig ist, scheint es seltsam, ihn nicht zu zählen. Na ja, die Regeln sind die Regeln.
Hmm. Ich könnte wahrscheinlich mit einem Variablennamen davonkommen, der auch nicht zur Gesamtsumme zählt. Die Sache ist, ich bin nicht sicher, wie ich den Code dann einfügen würde.
quelle
Clojure, 71
quelle
*in*
es sich nicht um eine handeltjava.io.BufferedReader
, wie von gefordertline-seq
.In memoriam Dennis M. Ritchie
Unix
57¹72:Angenommen, i ist die Datei, die die Ints enthält.
¹) war falsch, enthielt die Anzahl der Zeilen und fügte 1 Zeile zu wenig hinzu.
echo $ (($ (cat i | head -n $ (head -n1 i) | grep -v "-" | tr '\ n' '+') 0))quelle
Haskell, 51
(zusätzliche Leerzeichen für Klarheit, da sie nicht zählen)
Haskell ist ... interessant, da Sie in der Regel Programme mit einer erheblichen Anzahl von erforderlichen Leerzeichen erhalten.
quelle
filter (>0)
.C 88
Nach einer weiteren großen Anstrengung ist der Code ein Zeichen weniger. Bitte helfen Sie mir, ihn weiter zu reduzieren.
quelle
return 0;
) und ({}
fürfor
)b,x="%d";main(a,t){for(scanf(x,&t);t--&&scanf(x,&a);)b+=(a>0)*a;printf(x,b);}
<- 77 bytesBefunge-98 (24)
(Stellen Sie sicher, dass Sie einen Interpreter verwenden, der negative Zahlen lesen kann (scheint ein etwas häufiger Fehler zu sein, aber RcFunge funktioniert).)
Perl (25)
(Perl erlaubt Steuerzeichen in Variablennamen, ich habe meine Variable ^ B (ASCII 2) so benannt, dass sie nicht zum Ziel zählt.)
(Normale Variante (27 Zeichen)):
quelle
APL (10)
Erläuterung:
⍳⎕
: Liest eine Zeile und gibt eine Liste [1..N] für die Benutzereingabe N aus¨
: für jedes Element in dieser Liste ... (dh N-mal)0⌈⎕
: Lies eine Zeile, gib das Maximum von 0 und das eingegebene N zurück+/
gibt die Summe dieser Liste an.quelle
Mathematica:
1816quelle
PowerShell, 44
quelle
Q, 12
Probennutzung
quelle
befunge,
3524Mit ein wenig Inspiration durch die Antwort von Marinus habe ich auch 24 Charaktere verwaltet. aber ich habe einen ganz anderen ansatz.
quelle
PYTHON 2.x, 50 Zeichen
quelle
C, 70 bis
72ZeichenDie Ergebnisse auf der SPOJ-Website scheinen definitiv unwirklich - ich habe keine Ahnung, wie ich das auf 63 reduzieren kann.
Einige Compiler erreichen jedoch 68 Zeichen, wenn sie undefiniertes Verhalten missbrauchen. Das Folgende funktioniert unter x86-Linux mit 32-Bit-GCC, auf dem alle Argumente auf dem Stapel übergeben werden.
quelle
übertreffen, 27
Zählen Sie t in A1, Restdaten a2 und abwärts
quelle
Clojure, 108
Ich wünschte wirklich, ich könnte das
java.io.BufferedReader.
Teil vermeiden , da es 24 Zeichen selbst kostet. Aber AFAIK gibt es keine Möglichkeit, Zeilen von STDIN ohne es zu lesen.quelle
Perl, 20
Ich weiß, dass es alt und trivial ist, aber die Perl-Antwort kann noch verbessert werden:
quelle
}{
heißt / tun?C ++:
115 Zeichen lang. Müssen Sie es auf 90 optimieren. Irgendwelche Vorschläge?
quelle
return 0
inmain
. Indem Sie die Variablen global machen, können Sie die=0
Initialisierung löschen. Schließlichfor(;;)
ist die gleiche Anzahl von Zeichen wie,while()
aber Sie erhalten zwei zusätzliche Stellen, um einen Ausdruckstd::
vorcin
undcout
und das Loswerden derusing namespace std;
kann weitere 5 Zeichen speichern.PHP, 71
quelle
Python: (92 Zeichen)
quelle
a=raw_input
undr=range
und mita()
undr()
später können einige Zeichen gespeichert werden.Scala
5554:quelle
C
quelle
sum
kann auf reduziert werdens
, die Ausgabezeichenfolge kann nur sein"%d"
, etc.Rubin, 42
(basierend auf der Antwort von david4dev)
Bestes Ergebnis für Ruby auf spoj: http://www.spoj.com/ranks/SIZECON/lang=RUBY
quelle
45 Zeichen in Python
quelle