var QUESTION_ID=93441,OVERRIDE_USER=41723;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}
<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:
Sesos ,
11 33 BytesProbieren Sie es online! Überprüfen Sie Debug , um den generierten SBIN-Code anzuzeigen.
Sesos Montage
Die obige Binärdatei wurde durch Zusammenstellen des folgenden SASM-Codes generiert.
quelle
Haskell, 19 Bytes
Erzeugt die unendliche Liste
[0,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6,7,-7...
Haskell erlaubt unendlich viele Listen von Haus aus. Wenn Sie eine solche Liste drucken, werden die Elemente für immer einzeln gedruckt.
quelle
[n,1-n]
![1-n,n]
würde eine schönere Ausgabe produzieren.concatMap (\n -> [1-n, n]) [1..]
, oder? Nett!Brainfuck, 6 Bytes
Dies nutzt den Zellenumbruch und gibt alle möglichen Werte aus. In Brainfuck ist die native Ganzzahldarstellung ein Bytewert .
Probieren Sie es online!
quelle
int
hat nicht plötzlich mehr oder weniger Bits, nur weil Sie einen RAM hinzugefügt oder entfernt haben.Cubix ,
1412 BytesOnline testen! Sie können die Geschwindigkeit jetzt anpassen, wenn Sie möchten, dass sie schneller oder langsamer läuft.
Wie es funktioniert
Als erstes entfernt der Interpreter alle Leerzeichen und füllt den Code mit No-Ops auf,
.
bis er perfekt auf einen Würfel passt. Das bedeutet, dass der obige Code auch so geschrieben werden kann:Jetzt wird der Code ausgeführt. Der IP (Anweisungszeiger) beginnt in der oberen linken Ecke der linken Seite und zeigt nach Osten. Im Folgenden sind die Pfade aufgeführt, die während der Ausführung des Programms erforderlich sind:
Die IP beginnt auf dem roten Pfad ganz links im Bild. Es wird dann ausgeführt
OSo;
, was Folgendes bewirkt:O
Drucken Sie die TOS (Top-of-Stack) als Ganzzahl. Zu Beginn des Programms enthält der Stapel unendlich viele Nullen, sodass dieser ausgegeben wird0
.S
Drücken Sie32
den Zeichencode für das Leerzeichen.o
Drucken Sie die Nutzungsbedingungen als Zeichen. Dies druckt ein Leerzeichen.;
Pop die AGB. Entfernt die32
vom Stapel.Jetzt trifft die IP die
?
, die sie je nach Vorzeichen des TOS nach links, rechts oder gerade leitet. Im Moment ist die TOS0
, also geht es geradeaus. Das ist der blaue Weg;.
tut nichts und die IP trifft den Pfeil>
, der sie wieder entlang des roten Pfades nach Osten lenkt.~
Nimmt das bitweise NOT des TOS und ändert es in-1
.Hier erreicht die IP den rechten Rand des Netzes, der es nach links zurückwickelt; Dies druckt erneut die TOS (diesmal
-1
) und ein Leerzeichen.Jetzt trifft die IP die
?
wieder. Diesmal ist die TOS-1
; da dies negativ ist, biegt die IP nach links ab und nimmt den grünen Pfad. Der Spiegel\
lenkt die IP zu um(
, wodurch die TOS dekrementiert und in geändert werden-2
. Es kommt zurück und trifft den Pfeil;~
nimmt bitweise NICHT wieder auf und dreht den-2
auf1
.Wieder wird die TOS ausgegeben und ein Leerzeichen gedruckt. Dieses Mal, wenn die IP das trifft
?
, ist die TOS1
; da dies positiv ist, biegt die IP nach rechts ab und nimmt den gelben Pfad. Der erste Operator, dem es begegnet, ist dasS
Drücken einer zusätzlichen32
Taste. das;
knallt es, bevor es irgendwelche Probleme verursachen kann.Jetzt kehrt die IP zum Pfeil zurück und führt ihre Routine aus,
~
indem sie die TOS in ändert-2
und sieO
druckt. Da die TOS wieder negativ ist, geht die IP erneut den grünen Weg. Und es fährt immer so weiter *: rot, grün, rot, gelb, rot, grün, rot, gelb ... und druckt im folgenden Zyklus:TL; DR
Dieses Programm durchläuft wiederholt diese 3 einfachen Schritte:
Nicht getrennte Version, 6 Bytes
Das Entfernen der Trennung vereinfacht das Programm so sehr, dass es auf einen Einheitswürfel passen kann:
* Hinweis : Kein Programm ist wirklich unendlich, da es nur bis zu 2 52 zählt (wobei JavaScript beginnt, die Ganzzahlgenauigkeit zu verlieren).
quelle
MATL , 8 Bytes
Dies verwendet den Standarddatentyp von MATL, dh
double
, es funktioniert2^53
absolut. Die Ausgabe istProbieren Sie es online!
Erläuterung
quelle
@_@XD
als@_D@D
dies zu tun. Sie können die 0 beim ersten Durchlauf einfügen.XD
+1 fürShakespeare-Programmiersprache , 227 Bytes
Natürlich ist diese Antwort bei weitem nicht erfolgreich, aber ich fand es gut, dass dies ein Anwendungsfall ist, für den die SPL vergleichsweise gut geeignet ist.
Erklärt:
Wie Sie sehen können, wenn Sie diesen Code mit meiner Antwort auf die damit verbundene Herausforderung vergleichen, für immer zu zählen (dh alle natürlichen Zahlen zu drucken), nimmt die Länge des SPL-Codes ziemlich stark zu, wenn das Problem größer wird ...
quelle
Let us return to scene II.
sollte seinscene I
.$puck
auf 0 zurückgesetzt würde und dann das Hochzählen nicht mehr funktionieren würde. Ich habe das fehlendeI
im Code hinzugefügt und die Bytelänge korrigiert (was ohnehin ein bisschen verkehrt war)Python 2, 27 Bytes
Druckt
-1 0 -2 1 -3 2 -4 3 ...
quelle
05AB1E ,
96 Bytes3 Bytes gespart dank Adnan
Probieren Sie es online!
Drucke
0, -1, 1, -2, 2 ...
getrennt durch Zeilenumbrüche.quelle
[N,N±,
.±
und es endete 3 Bytes länger als deins.D,
kann aber durch ersetzt werden=
, um ein Byte zu sparen.GNU sed, 189 + 2 (rn Flags) = 191 Bytes
Dies ist höchstwahrscheinlich die längste Lösung, da sed keine ganzzahligen oder arithmetischen Operationen hat. Daher musste ich einen Inkrementoperator mit beliebiger Größe nur mit regulären Ausdrücken emulieren .
Lauf:
Ausgabe:
quelle
Brainfuck, 127 Bytes
Probieren Sie es online!
Bei einem unendlichen Band würde das theoretisch für immer laufen.
Unkomprimiert
quelle
ShadyAsFuck , 3 Bytes
Erläuterung:
Dies nutzt den Zellenumbruch und gibt alle möglichen Werte aus. In SAF ist die native Ganzzahldarstellung ein Bytewert .
quelle
R,
2524 BytesDank @JDL ein Byte Golf gespielt.
Probieren Sie es online!
Beispielausgabe:
quelle
while(1)
mitrepeat
einem Zeichen zu speichern.Stapel, 56 Bytes
Ausgabe:
usw. Funktioniert bis 2147483647; 58 Bytes, wenn Sie (-) 2147483648 in der Ausgabe möchten:
44 Byte, wenn alle unterstützten positiven Ganzzahlen gedruckt werden, dann sind alle unterstützten negativen Ganzzahlen zulässig und werden endlos wiederholt:
quelle
Java 7,
151134122118 Bytes12 Bytes gespart dank @flawr (und @xnor indirekt)
Nach Regeländerung .. (
595663 Bytes)Da
2147483647 + 1 = -2147483648
wir in Java nicht einfachi++
unendlich weitermachen können, bestand die Herausforderung darin, alle Zahlen einmal zu drucken. Mit dem obigen Code mit zusätzlichem Bereich, wird es stattdessen alle ganzen Zahlen eines Druck von-2147483648
bis2147483647
jeweils einmal, in der folgenden Reihenfolge:0, -1, 1, -2, 2, -3, 3, -4, ..., 2147483646, -2147483647, 2147483647, -2147483648
. Vielen Dank an @ OlivierGrégoire für den Hinweis auf Javas Verhalten in Bezug aufMIN_VALUE-1
/MAX_VALUE+1
. Probieren Sie es hier aus.Ungolfed & Testcode:
Probieren Sie es hier aus - dies führt zu einem Laufzeitfehler
Ausgabe:
quelle
int
-version-Programm gibt bei unendlicher Zeit jede ganze Zahl in unendlicher Zeit aus.MAX_VALUE
, können Sie meine Antwort überprüfen (wahrscheinlich immer noch auf der letzten Seite).DC (GNU oder OpenBSD) - 16 Bytes
Diese Version ist nicht kürzer als die unten stehende Version, sollte aber in der Lage sein, ohne dass der Stack in Ihrem PC explodiert. Trotzdem wird unendlich viel Speicherplatz in Anspruch genommen ... irgendwann ...
Wegen des
r
Befehls benötigt es GNU-DC oder OpenBSD-DC .Prüfung:
DC - 16 Bytes
Ein bisschen gemein jetzt. ;-)
Diese Version missbraucht die Stapellänge als Zähler, während der Stapel wächst.
Prüfung:
DC - 17 Bytes
Ohne schmutzige Tricks.
Prüfung:
quelle
[-]P
tun45P
. "GNU-Dc oder OpenBSD-Dc" - Gibt es noch andere Versionen, die in der Natur verbreitet sind?dc
nur wenige Operatoren haben. Ich habe sie unabhängig von diesen entwickelt.r
so "swap". Ich bin manchmal verwirrt, wenn ich mir die Dofferent-Versionen ansehe. Wahrscheinlich möchte niemand mehr im alten Dc codieren (und dortr
würde der Stapel gelöscht ). Vielleicht würde ich "Dc" in "AT & T dc" ändern? ... und danke für den45P
Hinweis ...C # 74 Bytes
Ausgabe:
Versuch es:
dotnetfiddle.net (limitiert auf 1000)
quelle
public
Modifikatoren weglassen und 14 Bytes sparen. Die Standardeinstellungen funktionieren genauso gut.Ruby,
26221916 BytesDruckt durch Zeilenumbrüche getrennte Zahlen. -3 Bytes von @manatwork. -3 Bytes von @ m-chrzan.
quelle
p
tun dies auch.0.step{|n|p n,~n}
für 17 Bytes.JavaScript,
2926 BytesNicht unendliche Version, 26 Bytes
3 Bytes gespart dank ETHproductions
Zeigt alle Ganzzahlen zwischen -9007199254740991 und 9007199254740992 an.
Unendliche Version (ES6),
114112 Bytes2 Bytes gespart dank ETHproductions
zeigt alle ganzen Zahlen an, gegebene unendliche Zeit und Gedächtnis.
quelle
n[a,b,c]
Gibt zurückn[c]
, sodass Sie die Klammern einfügen könnenn[(a||n.unshift(1),0)]
.1
in noch die for-Schleife.for(;;)
läuft für immer. Mit können Sie zwei weitere Bytes speichernfor(n=1;;)alert([1-n,n++])
. Außerdem werden hier keine ES6-Funktionen mehr verwendet> <> ,
1915 BytesDaraufhin wird Folgendes gedruckt:
... und so weiter. Das Trennzeichen ist eine Newline.
Nach dem Lesen der Antwort von @ xnor neu geschrieben, um eine Version dieses Algorithmus zu verwenden. Beginnend mit
n=1
, gibt das Programm vor dem Inkrementieren1-n
undn
jeweils gefolgt von einem Zeilenumbruch ausn
. Nach dem Überlaufen des Maximalwertes endet das Programm mit einem Fehler vonsomething smells fishy...
. Wann genau dies geschieht, hängt von der Implementierung des Interpreters ab.Vorherige Version:
Ab 0 wird das Programm auf unbestimmte Zeit wiederholt. In jeder Schleife wird der aktuelle Wert zusammen mit einer neuen Zeile gedruckt. Es wird dann negiert und erhöht, wenn es positiv ist.
quelle
Bash + GNU-Dienstprogramme, 26
quelle
$[++i]
dies in Bash so ist.seq NaN
zum Laufen gegangen und nach 999999 erfolgt der Druck in wissenschaftlicher Notation mit 5-stelliger Genauigkeit. In Bezug auf die Herausforderung ist dieser Wert dann die größte Ganzzahl, die Sie drucken, was in Ordnung ist, da der Rest eine vorherige Zahl nicht wiederholt. Es ist auch aufgefallen, dass Sie seq mit ausführen könneninf
, bei denen die Groß- und Kleinschreibung nicht berücksichtigt wird, wie beinan
. +1bc,
1716 BytesEdit: 1 Byte weniger dank Digital Trauma .
Neben der Vielfalt der bisher verwendeten Sprachen präsentiere ich eine bc-Lösung, die mit Ganzzahlen beliebiger Größe funktioniert . Nach dem Code ist eine neue Zeile erforderlich, die in der Gesamtzahl der Bytes gezählt wird.
In der ersten Iteration
i
ist nicht definiert, aber das Drucken gibt 0 zu meiner Überraschung.quelle
for(;;){i;-++i}
bc
es auch so war.for(;;){i++;-i}
(gleiche Länge).Labyrinth , 9 Bytes
Probieren Sie es online!
Dies funktioniert auch und ist im Wesentlichen dasselbe:
Erläuterung
Der Kontrollfluss in diesem Code ist ziemlich lustig. Denken Sie daran, dass der Anweisungszeiger (IP) in einem Labyrinth-Programm dem Pfad von Nicht-Leerzeichen folgt und den oberen Rand des Stapels an einer beliebigen Kreuzung untersucht, um zu entscheiden, welchen Pfad Sie verwenden möchten:
Wenn die IP eine Sackgasse erreicht, dreht sie sich um (der Befehl wird am Ende nur einmal ausgeführt). Und die IP beginnt in der oberen linken Ecke und bewegt sich nach Osten. Beachten Sie auch, dass der Stapel implizit mit einer unendlichen Anzahl von Nullen gefüllt ist.
Das Programm startet mit diesem kurzen Bit:
Jetzt befindet sich die IP an der relevanten Kreuzung und bewegt sich geradeaus auf die,
(
die die Oberseite des Stapels dekrementiert-1
. Die IP stößt in eine Sackgasse und dreht sich um.:
dupliziert die Oberseite des Stapels noch einmal. Jetzt ist die Oberseite des Stapels negativ und die IP dreht sich nach links (nach Westen). Wir führen nun eine weitere Iteration der Hauptschleife durch:Diesmal ist die Oberseite des Stapels positiv, also dreht sich IP nach rechts (nach Westen) und führt sofort eine weitere Iteration der Hauptschleife aus, bei der der Stapel gedruckt wird
1
. Dann, nachdem es wieder negiert wurde, schlagen wir:
mit-1
auf den Stapel.Diesmal dreht sich die IP nach links (nach Osten). Das
"
ist nur ein No-Op und die IP dreht sich in der Sackgasse um.:
macht eine weitere Kopie und dieses Mal dreht sich die IP nach Süden.(
Dekrementiert den Wert auf-2
, dreht sich die IP wieder um. Wenn die Spitze des Stapels immer noch negativ ist, dreht sich die IP nun nach Westen:
und führt die nächste Iteration der Hauptschleife durch.Auf diese Weise iteriert die IP nun zwischen einer Iteration mit enger Schleife, bei der eine positive Zahl gedruckt wird, und einer Iteration, bei der beide Sackgassen durchlaufen werden, um den Wert zu dekrementieren, bevor eine negative Zahl gedruckt wird.
Sie könnten sich fragen, warum es das
"
in der zweiten Zeile gibt, wenn es eigentlich nichts tut: Wenn die IP-Adresse:
einen negativen Wert erreicht, kann sie nicht nach links (Osten) abbiegen, sodass sie stattdessen nach rechts (Westen) abbiegen würde (Als Faustregel gilt: Wenn die übliche Richtung an einer Kreuzung nicht verfügbar ist, nimmt die IP die entgegengesetzte Richtung). Das bedeutet, dass die IP auch niemals(
den unteren Rand erreichen würde und wir nicht zwischen positiven und negativen Iterationen unterscheiden könnten.quelle
JavaScript (ES5),
32313029 ByteDruckt
0 -1 1 -2 2 -3 3 -4 4 -5 5 ...
Dank Patrick Roberts 1 Byte gespart! 2 Bytes gespart dank Conor O'Brien!
quelle
[i++,-i].map(alert)
stattalert(i++),alert(-i)
?for(;;)
ist ein Byte kürzer alswhile(1)
map
ist ES6i=0;
Bit innerhalb der for-Schleife verschieben, um ein Byte zu speichern.Java,
6554 BytesUngolfed-Testcode
quelle
biggest magnitude of the standard integer type of your language
int
ist der Standard-Integer-Typ von Java.()->{for(int i=0;;)System.out.print(i+" "+(1-i++));};
( 53 Bytes )C #, 83 Bytes
Ungolfed:
Ausgänge:
quelle
void f(){code_present_in_main}
also für die Byteanzahl. Was den Code selbstvoid f(){for(decimal n=1;;)Console.Write((1-n)+","+n+++",");}
decimal n=0
undn++;
in die for-Schleife setzen:void f(){for(decimal n=0;;n++){Console.Write(n+",");if(n>0)Console.Write(-n+",");}}
:)C #
8666 BytesNeue Antwort:
Klar:
Alte Antwort (86 Bytes):
Ungolfed:
quelle
Enumerable.Range
und eins vorint.MaxValue
.void f(){for(var n=1;;)Console.Write((1-n)+","+n+++",");}
( 57 Bytes ) .J, 25 Bytes
Funktioniert weiter der Online-Site , kann aber noch nicht auf dem Computer überprüft werden. Druckt Zahlen wie:
usw.
quelle
Powershell,
201918 BytesVerbessert durch schamloses Stehlen von TimmyDs Antwort
Ausgabe:
Alte Version:
Nicht sicher, warum tbh, aber - nicht deklarierte Variable (oder - $ null) wird als 0 ausgewertet, was uns in dieser Version 2 Bytes erspart hat ...
quelle
Pyke ,
72 BytesProbieren Sie es hier aus!
7 Bytes
Probieren Sie es hier aus!
Wenn das Drucken von + -0 in Ordnung ist,
oD_r
quelle
Brachylog , 2 Bytes
Probieren Sie es online!
Da das Programm keine Eingabe erhält, bleibt die Eingabevariable des Hauptprädikats uneingeschränkt. Zuerst wird angenommen, dass es 0 ist, aber wenn die Ausführung trifft
⊥
, wird zum einzig möglichen Fehlerpunkt zurückgegangen: der Wahl des Werts für die Eingabevariable. Dann wird 1, -1 und jede andere Ganzzahl ausprobiert, wobei jede durch Zeilenumbrüche getrennte Zahl für⊥
immer gedruckt wird, da immer ein Zurückverfolgen erzwungen wird , und der Effekt vonẉ
wird sofort ausgeführt.quelle