var QUESTION_ID=133109,OVERRIDE_USER=69148;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px} /* font fix */ body {font-family: Arial,"Helvetica Neue",Helvetica,sans-serif;} /* #language-list x-pos fix */ #answer-list {margin-right: 200px;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Antworten:
Pyth , 2 Bytes
Probieren Sie es online! Implizite Eingabe.
S
ist 1-indizierter Bereich unds
ist die Summe.quelle
Schale , 1 Byte
Probieren Sie es online!
Eingebaut!
Σ
in Husk wird normalerweise verwendet, um die Summe aller Elemente einer Liste zu erhalten, aber wenn es auf eine Zahl angewendet wird, gibt es genau zurückn*(n+1)/2
.quelle
Σ
ist ein Zwei-Byte-Unicode-Zeichen auf meinem Computer. Ich vermute, Sie verwenden die Codepage 1253? msdn.microsoft.com/en-us/library/cc195055.aspxPiet , 161 Bytes / 16 Codels
Sie können es mit diesem Piet-Interpreter interpretieren oder das Bild auf diese Website hochladen und dort ausführen. Ich bin nicht sicher, ob ich die Anzahl der Bytes ändern könnte, um die Größe zu verringern.
Skalierte Version des Quellbildes:
Erläuterung
Der
highlighted
Text zeigt den aktuellen Stapel (von links nach rechts wachsend), vorausgesetzt, die Benutzereingabe lautet5
:Geben Sie eine Zahl ein und legen Sie sie auf den Stapel
Dupliziere diese Zahl auf dem Stapel
Schieben Sie 1 (die Größe des dunkelroten Bereichs) auf den Stapel
Addiere die beiden oberen Zahlen
Multiplizieren Sie die beiden oberen Zahlen
Der schwarze Bereich stellt sicher, dass sich der Cursor nach rechts unten zum hellgrünen Codel bewegt. Dieser Übergang drückt 2 (die Größe von dunkelgrün) auf den Stapel
Teilen Sie die zweite Zahl auf dem Stapel durch die erste
Pop und Ausgabe der Top-Nummer (interpretiert als Nummer)
Wenn Sie einen weißen Bereich einfügen, ist der Übergang ein
nop
, das Schwarze fängt unseren Cursor ein. Damit ist die Ausführung des Programms beendet.quelle
Brain-Flak , 16 Bytes
Probieren Sie es online!
Dies ist eines der wenigen Dinge, in denen Brain Flak wirklich gut ist.
Da dies eines der einfachsten Dinge ist, die Sie in Brain-Flak tun können, und es viel Sichtbarkeit bietet, folgt eine ausführliche Erklärung:
quelle
Oase , 3 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Mathematica, 9 Bytes
Mathematica, 10 Bytes
Mathematica, 11 Bytes
Mathematica, 12 Bytes
Mathematica, 14 Bytes
(von @ user71546)
Mathematica, 15 Bytes
Mathematica, 16 Bytes
Mathematica, 17 Bytes
(von @Not a tree)
Mathematica, 18 Bytes
Mathematica, 19 Bytes
Mathematica, 20 Bytes
(von @Not a tree)
quelle
Array[Boole[#2>=#]
&,{#,#}]~Total~2
&JavaScript (ES6), 10 Byte
Beispiel
Code-Snippet anzeigen
quelle
n*-~n/2
funktioniert auch, aber nur fürn < 2**31
x86_64-Maschinensprache (Linux),
98 ByteUm es online auszuprobieren! Kompilieren Sie das folgende C-Programm und führen Sie es aus.
Vielen Dank an @CodyGray und @Peter für -1.
quelle
shr
stattdessen wahrscheinlich verwendensar
, um Ihre Ausgabe als nicht signiert zu behandeln (keine Änderung der Codegröße). (Von @CodyGray entdeckt und in seiner 7-Byteadd
+loop
Antwort darauf hingewiesen ).mul %edi
oderimul %edi
(jeweils 2B) anstelle der 3B-Zwei-Operanden-Form verwenden. Es überfordert EDX mit dem High-Half-Ergebnis, aber das ist in Ordnung. Der Multioperandimul
wurde später als die Einoperandenform eingeführt und hat einen 2-Byte-Opcode mit einem0F
Escape-Byte. Jede der drei Optionen führt immer zum gleichen Ergebniseax
. Es ist nur die obere Hälfte, die von signierten und nicht signierten Werten abhängt.Python 2 ,
2416 Bytes-8 Bytes dank FryAmTheEggman.
Probieren Sie es online!
quelle
C # (.NET Core) , 10 Byte
Probieren Sie es online!
quelle
Java (OpenJDK 8) , 10 Byte
Probieren Sie es online!
quelle
Oktave ,
22 bis19 BytesWeil Rechenoperationen langweilig sind ...
Probieren Sie es online!
Erläuterung
Vorausgesetzt
n
, dies erzeugt einen
×n
Matrix mit allen Einträgen gleich der Zahl e ; macht Eingaben unter der Diagonalen Null; und gibt die Anzahl der Werte ungleich Null aus.quelle
@(n)sum(1:n)
sum
.Gelee , 2 Bytes
Probieren Sie es online!
Erläuterung
Gauß-Summe, 3 Bytes
Erläuterung
quelle
APL, 3 Bytes
Probieren Sie es online!
+/
- Summe (Verkleinerung+
),⍳
- Reichweite.quelle
1+
1
daher habe ich sie nicht angegeben. Es ist hier üblich, nur bei der Verwendung anzugeben⎕IO←0
(und es ist nicht in der Byteanzahl enthalten)Haskell , 13 Bytes
Dies ist die kürzeste (
denkeich ):Probieren Sie es online!
Direkt,
1713 BytesDanke @WheatWizard für die
-4
Bytes!Probieren Sie es online!
Punktfrei direkt, 15 Bytes
Danke @nimi für die Idee!
Probieren Sie es online!
Punktfrei über
sum
16 BytesProbieren Sie es online!
Rekursiv
2218 BytesDanke @maple_shaft für die Idee & @Laikoni fürs Golfen!
Probieren Sie es online!
Standard
fold
, 19 BytesProbieren Sie es online!
quelle
Sternenklar ,
2722 Bytes5 Bytes gespart dank @miles !
Probieren Sie es online!
Erläuterung
quelle
05AB1E , 2 Bytes
Probieren Sie es online!
Wie es funktioniert
Gauß-Summe, 4 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
ÝO
funktioniert auch und bedeutethello
.Java (OpenJDK 8) , 10 Byte
Probieren Sie es online!
n->n*(n+1)/2
Ich brauchte einen Moment, um Golf zu spielen, weil ich langsam bin.Dies ist jedoch keine echte Java-Antwort. Es ist definitiv nicht ausführlich genug.
Nicht schlecht, aber wir können es besser machen.
Ich liebe java
quelle
Überprüfen Sie , 5 Bytes
Check ist noch nicht einmal eine Golfsprache, aber sie schlägt CJam!
Probieren Sie es online!
Erläuterung:
Die eingegebene Nummer wird auf den Stapel gelegt.
:
dupliziert es zu gebenn, n
. Es wird dann inkrementiert mit)
, gebenn, n+1
.*
multipliziert die beiden miteinander und$
dividiert das Ergebnis durch 2.p
druckt das Ergebnis aus und das Programm wird beendet.quelle
MATL , 2 Bytes
Probieren Sie es online!
Nicht glücklich Smiley.
quelle
Taxi , 687 Bytes
Probieren Sie es online!
Ungolfen mit Kommentaren:
Es sind 22,6% weniger Bytes für die Schleife als für die Verwendung
x*(x+1)/2
quelle
Julia, 10 Bytes
Probieren Sie es online!
11 Bytes (funktioniert auch mit Julia 0.4)
Probieren Sie es online!
quelle
Brainfuck, 24 Bytes.
E / A wird als Byte behandelt.
Erklärt
quelle
,,,, 6 bytes
Erläuterung
Wenn ich irgendwann in Kürze Reichweite einsetze ...
quelle
Retina , 13 Bytes
Probieren Sie es online! Erläuterung: Die erste und die letzte Stufe sind nur unäre ⇔ Dezimalumwandlungen. Die mittlere Stufe ersetzt jeweils
1
durch die Anzahl von1
s links und eine weitere1
für sich1
selbst, zählt also von1
bisn
und summiert die Werte implizit.quelle
> <> , 7 + 3 = 10 Bytes
Berechnet n (n + 1) / 2 .
3 Bytes für das -v hinzugefügt Flag
Probieren Sie es online!
Oder wenn die Eingabe als Zeichencode erfolgen kann:
> <> 9 Bytes
Probieren Sie es online!
quelle
(n^2+n)/2
) sind es ebenfalls 7 Bytes:::*+2,n
Gleichstrom , 7 Bytes
ODER
ODER
Probieren Sie es online!
quelle
PHP, 19 Bytes
mit Builtins, 29 Bytes:
Schleife, 31 Bytes:
quelle
for(;$argn;$s+=$argn--);echo$s;
Cubix ,
1210 BytesErste Version
Probieren Sie es online!
Erläuterung
Erweitert auf einen Würfel sieht der Code folgendermaßen aus:
Der Anweisungszeiger (IP) beginnt in
I
östlicher Richtung. Es bewegt sich weiter nach Osten, bis es auf den/
Spiegel trifft , der es nach Norden reflektiert. Wenn die IP den oberen Rand des Codes erreicht, wird sie.
in der dritten Zeile bis zum letzten Punkt umgebrochen und bewegt sich nach Süden. Dann springt es zum vorletzten Punkt in der.
letzten Zeile und bewegt sich nach Norden. Dann erreicht es wieder den/
Spiegel, der es nach Osten reflektiert, nur für den nächsten/
, um es wieder nach Norden zu reflektieren. Diesmal wird die IP in der.
dritten Zeile zum vorletzten und.
in der letzten Zeile zum letzten Zeilenumbruch.Die Anweisungen werden in der folgenden Reihenfolge ausgeführt.
quelle
x86-64-Maschinencode, 7 Byte
Die obigen Bytes definieren eine Funktion, die einen einzelnen Parameter akzeptiert
n
und einen Wert zurückgibt, der die Summe aller Ganzzahlen von 1 bis enthältn
.Es wird in die Microsoft x64-Aufrufkonvention geschrieben , die den Parameter im
ECX
Register übergibt . Der Rückgabewert bleibtEAX
wie bei allen x86 / x86-64-Aufrufkonventionen erhalten.Ungolfed Assembler-Mnemonik:
Probieren Sie es online!
(Der dortige C-Funktionsaufruf ist mit einem Attribut versehen, das bewirkt, dass GCC ihn gemäß der von meinem Assemblycode verwendeten Microsoft-Aufrufkonvention aufruft. Wenn TIO MSVC bereitgestellt hätte, wäre dies nicht erforderlich.)
Anhand der ungewöhnlichen Standards des Codegolfs sehen Sie, dass dieser iterative Looping-Ansatz Ansätzen vorzuziehen ist , die die vernünftigere mathematische Formel (
n(n+1) / 2
) verwenden, obwohl er offensichtlich in Bezug auf die Laufzeitgeschwindigkeit erheblich weniger effizient ist.Mit der Zahlentheorie kann die Implementierung von ceilingcat immer noch um ein Byte übertroffen werden. Jede dieser Anweisungen ist wichtig, aber es gibt eine etwas kürzere Codierung
IMUL
, dieEAX
implizit als Zieloperand verwendet wird (tatsächlich wird sie verwendetEDX:EAX
, aber wir können die oberen 32 Bits des Ergebnisses einfach ignorieren). Dies sind nur 2 von 3 zu codierenden Bytes.LEA
dauert auch drei Bytes, aber es gibt wirklich keinen Weg daran vorbei, weil wir unter Beibehaltung des ursprünglichen Wertes erhöhen müssen. Wenn wirMOV
eine KopieINC
anfertigen würden, wären wir bei 4 Bytes. (In x86-32, woINC
es nur 1 Byte gibt, wären wir bei den gleichen 3 Bytes wieLEA
.)Die letzte Rechtsverschiebung ist notwendig, um das Ergebnis in zwei Hälften zu teilen, und ist sicherlich kompakter (und effizienter) als eine Multiplikation. Der Code sollte jedoch
shr
stattdessen verwendet werdensar
, da davon ausgegangen wird, dass der Eingabewertn
eine ganze Zahl ohne Vorzeichen ist. (Diese Annahme gilt natürlich gemäß den Regeln, aber wenn Sie wissen, dass die Eingabe nicht vorzeichenbehaftet ist, sollten Sie keine vorzeichenbehaftete arithmetische Verschiebung durchführen, da das obere Bit, das auf einen großen vorzeichenlosen Wert gesetzt ist, das Ergebnis verursacht falsch sein.)Jetzt nur noch 8 Bytes (danke an Peter Cordes). Immer noch 8> 7.
quelle
imul ecx
odermul ecx
ein Byte in der Closed-Form-Implementierung funktionieren und speichern. Ich habe das nicht sofort bemerkt; Ich wollte gerade kommentieren, dass es sowohl für die Leistung als auch für die Codegröße optimal ist, bevor mir klar wurde, dass ein implizitereax
Operand in Ordnung ist.add
+loop
kürzer wäre alsimul
bei der anderen Antwort. Praktisch, dass es eine Standardkonvention für Anrufe gibt, die das erste Argument enthältecx