Ihre Aufgabe ist es, die kürzeste Endlosschleife zu erstellen!
Bei dieser Herausforderung geht es darum, eine Endlosschleife zu erstellen, die im Gegensatz zu ihrer möglichen Duplizierung keine Ausgabe erzeugt. Der Grund dafür ist, dass der Code möglicherweise kürzer ist, wenn keine Ausgabe erfolgt.
Regeln
- Jede Einreichung muss ein vollständiges Programm sein.
- Sie müssen die kürzeste Endlosschleife erstellen.
- Selbst wenn Ihrem Programm irgendwann der Speicher ausgeht, wird es trotzdem akzeptiert, solange es die ganze Zeit von Anfang an ausgeführt wird, bis der Speicher voll ist. Auch wenn der Arbeitsspeicher nicht ausreicht, sollte STDERR trotzdem nicht belastet werden.
- Das Programm darf keine Eingaben vornehmen (das Lesen aus einer Datei ist jedoch zulässig) und sollte nichts an STDOUT ausgeben. Die Ausgabe in eine Datei ist ebenfalls verboten.
- Das Programm darf nichts nach STDERR schreiben.
- Sie können auch eine Sprache (oder Sprachversion) verwenden, die neuer als diese Herausforderung ist. -Bitte beachten Sie, dass ein Dolmetscher vorhanden sein muss, damit die Einsendung getestet werden kann. Es ist erlaubt (und sogar empfohlen), diesen Dolmetscher für eine zuvor nicht implementierte Sprache selbst zu schreiben. : D
- Einsendungen werden in Bytes in einer geeigneten (bereits vorhandenen) Codierung bewertet, normalerweise (aber nicht unbedingt) in UTF-8. Einige Sprachen, wie Ordner, sind etwas schwierig zu bewerten - im Zweifelsfall fragen Sie bitte bei Meta nach.
- Hierbei geht es nicht darum, die Sprache mit dem kürzesten Endlosschleifenprogramm zu finden. Hier geht es darum, das kürzeste Endlosschleifenprogramm in jeder Sprache zu finden. Daher werde ich keine Antwort annehmen.
- Wenn Ihre bevorzugte Sprache eine triviale Variante einer anderen (möglicherweise populäreren) Sprache ist, die bereits eine Antwort hat (denken Sie an BASIC- oder SQL-Dialekte, Unix-Shells oder triviale Brainf ** k-Derivate wie Alphuck), sollten Sie eine Anmerkung zur vorhandenen hinzufügen antworte, dass die gleiche oder eine sehr ähnliche Lösung auch in der anderen Sprache die kürzeste ist.
- Es sollte eine Website wie Wikipedia, Esolangs oder GitHub für die Sprache geben. Wenn zum Beispiel die Sprache CJam ist, dann könnte man auf die Seite in der Kopfzeile verlinken wie
#[CJam](http://sourceforge.net/p/cjam/wiki/Home/), X bytes
. - Standardlücken sind nicht erlaubt.
(Ich habe einige dieser Regeln aus Martin Büttners "Hello World" -Herausforderung übernommen.)
Bitte zögern Sie nicht, in den Kommentaren zu schreiben, wie diese Herausforderung verbessert werden könnte.
Katalog
Dies ist ein Stack-Snippet, das sowohl einen alphabetischen Katalog der verwendeten Sprachen als auch eine allgemeine Bestenliste generiert. Um sicherzustellen, dass Ihre Antwort angezeigt wird, starten Sie sie bitte mit diesem Markdown-Header:
# Language name, X bytes
Offensichtlich ersetzen Language name
und X bytes
mit den richtigen Gegenständen. Wenn Sie auf die Website der Sprachen verlinken möchten, verwenden Sie diese Vorlage wie oben angegeben:
#[Language name](http://link.to/the/language), X bytes
Zum Schluss noch ein Ausschnitt: (Klicken Sie auf "Ganze Seite", um eine bessere Ansicht zu erhalten.)
var QUESTION_ID=59347;var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";var COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk";var OVERRIDE_USER=41805;var answers=[],answers_hash,answer_ids,answer_page=1,more_answers=true,comment_page;function answersUrl(index){return"//api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+index+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(index,answers){return"//api.stackexchange.com/2.2/answers/"+answers.join(';')+"/comments?page="+index+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:true,success:function(data){answers.push.apply(answers,data.items);answers_hash=[];answer_ids=[];data.items.forEach(function(a){a.comments=[];var id=+a.share_link.match(/\d+/);answer_ids.push(id);answers_hash[id]=a});if(!data.has_more)more_answers=false;comment_page=1;getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:true,success:function(data){data.items.forEach(function(c){if(c.owner.user_id===OVERRIDE_USER)answers_hash[c.post_id].comments.push(c)});if(data.has_more)getComments();else if(more_answers)getAnswers();else process()}})}getAnswers();var SCORE_REG=/<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;var OVERRIDE_REG=/^Override\s*header:\s*/i;function getAuthorName(a){return a.owner.display_name}function process(){var valid=[];answers.forEach(function(a){var body=a.body;a.comments.forEach(function(c){if(OVERRIDE_REG.test(c.body))body='<h1>'+c.body.replace(OVERRIDE_REG,'')+'</h1>'});var match=body.match(SCORE_REG);if(match)valid.push({user:getAuthorName(a),size:+match[2],language:match[1],link:a.share_link,});else console.log(body)});valid.sort(function(a,b){var aB=a.size,bB=b.size;return aB-bB});var languages={};var place=1;var lastSize=null;var lastPlace=1;valid.forEach(function(a){if(a.size!=lastSize)lastPlace=place;lastSize=a.size;++place;var answer=jQuery("#answer-template").html();answer=answer.replace("{{PLACE}}",lastPlace+".").replace("{{NAME}}",a.user).replace("{{LANGUAGE}}",a.language).replace("{{SIZE}}",a.size).replace("{{LINK}}",a.link);answer=jQuery(answer);jQuery("#answers").append(answer);var lang=a.language;lang=jQuery('<a>'+lang+'</a>').text();languages[lang]=languages[lang]||{lang:a.language,lang_raw:lang,user:a.user,size:a.size,link:a.link}});var langs=[];for(var lang in languages)if(languages.hasOwnProperty(lang))langs.push(languages[lang]);langs.sort(function(a,b){if(a.lang_raw.toLowerCase()>b.lang_raw.toLowerCase())return 1;if(a.lang_raw.toLowerCase()<b.lang_raw.toLowerCase())return-1;return 0});for(var i=0;i<langs.length;++i){var language=jQuery("#language-template").html();var lang=langs[i];language=language.replace("{{LANGUAGE}}",lang.lang).replace("{{NAME}}",lang.user).replace("{{SIZE}}",lang.size).replace("{{LINK}}",lang.link);language=jQuery(language);jQuery("#languages").append(language)}}
body{text-align:left!important}#answer-list{padding:10px;width:500px;float:left}#language-list{padding:10px;padding-right:40px;width:500px;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="language-list"> <h2>Shortest Solution 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> <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> <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>
""
eine leere Zeichenfolge drucken ?Antworten:
Befunge , 0 Bytes
Jep. Ein Befunge-Programm existiert in einem zweidimensionalen Spielfeld mit fester Größe, das sich um die Ränder wickelt. Mit nichts in diesem Raum zu stören, läuft der Programmzähler standardmäßig in einer Endlosschleife :)
quelle
<pre> </pre>
für einen leer aussehenden Codeblock verwenden.L00P , 0 Bytes
Diese Sprache wurde für Looping gemacht und genau das wird es tun ...
quelle
C64-Maschinencode , 2 Bytes
Verzweigt sich zu sich selbst, wenn das Null-Flag nicht gesetzt ist.
Zweige sind Einzelbyte-Offsets von der nächsten Befehlsstelle, und 254 ist -2 im Zweierkomplement ... Der BNE-Befehl (D0) benötigt ein Byte Speicher und der Offset ein zweites Byte, so dass zwei Bytes zurückverzweigt werden zu sich selbst. Das Null-Flag wird immer gelöscht, wenn Code in den Speicher geladen wird.
Beachten Sie, dass dies kein rekursiver Unterprogrammaufruf ist, sodass Ihnen niemals der Speicher ausgeht. Beachten Sie auch, dass es keinen Header, Compiler oder ausführbaren Overhead gibt ... es ist wirklich ein Zwei-Byte-Programm :)
quelle
BNE -2
debug
. Dadurch würde die Maschine effektiv gemauert, und den meisten Mitarbeitern fehlte das Wissen, dass es nicht nur eine tote Fahrt war.Brainfuck, 3 Bytes
Niemals dekrementieren, niemals enden.
quelle
-[]
]
funktionieren würde/// , 3 Bytes
Gibt es Bonuspunkte für die Verwendung des Sprachnamens als Quellcode?
quelle
///
;)esolangs.org
wiki
_
_
_
_
/wiki////
. Während das sollte ein Weg sein, kann der Server mit dieser Information tun , was es will.Java , 53 Bytes
Yay volle Programmanforderung!
quelle
main
:(Prolog, 5 Bytes
Um festzustellen, ob das Prädikat
a
wahr ist, müssen Sie nur prüfen, ob das Prädikata
wahr ist.Sie müssen die Datei laden und ausführen
a
, beide mit einem Befehlszeilenargument. Beachten Sie, dass die Rekursion wahrscheinlich als Endlosschleife optimiert ist und den Stapel nicht sprengen sollte.Auch das sieht aus wie ein Smiley, aber ich bin nicht sicher, wie ich es nennen soll. Der Punkt sieht aus wie Speichel, also vielleicht "vegetativer Zustand" oder "Infiurierter Programmierer mit lockigem Haar". Vorschläge sind willkommen.
quelle
a
es wahr ist, indem Sie überprüfen, oba
es wahr ist, indem Sie überprüfen, oba
es wahr ist.Haskell , 9 Bytes
Endlose Rekursion der Hauptfunktion. Sollte aufgrund der Optimierung der Schwanzrekursion zu einer Schleife kompiliert werden.
quelle
<<loop>>
Ausnahme aus - zumindest mitghc
. Möglicherweise verhält sich ein anderer Compiler anders.runhaskell Loop.hs
ausgeführt es glücklich für einige Minuten auf meinem Rechner. Zumindest kann es von einem Dolmetscher ausgeführt werden. Ich denke, die<<loop>>
Laufzeitausnahme, dieghc
ausgelöst wird , ist lediglich ein Implementierungsdetail der Laufzeit und nicht Teil der Haskell-Sprache, wie in einem der Haskell-Berichte angegeben.runhaskell
Akzeptiert gerne den Code, aber es wird keine Schleife ausgeführt. Es macht nichts. Die Herausforderung besteht jedoch nur darin, die Schleife zu erstellen und nicht auszuführen. Ich denke, das ist in Ordnung. Habe eine +1.main = main
sind semantisch im selben Bucket wieundefined
odererror "<<loop>>"
: bottom values ⟂.main=main>>main
Python, 9 Bytes
Funktioniert sowohl in 2 als auch in 3.
Verkürzt von @FryAmTheEggman
quelle
x86 ELF ausführbar, 45 Bytes
Im Gegensatz zur überwiegenden Mehrheit dieser Antworten handelt es sich hierbei um ein wirklich vollständiges Programm, wie es bei einem freistehenden ausführbaren Programm der Fall ist.
Die Eingeweide des Programms liegen bei Byte 0x20
ebfe
, was in einer anderen Antwort als das kleinste NASM-Programm bezeichnet wird. Wenn Sie dies jedoch mit NASM zusammenstellen, erhalten Sie eine ausführbare Datei mit Tausenden von nicht benötigten Bytes. Wir können die meisten von ihnen mit der Technik skizziert loszuwerden hier . Sie können feststellen, dass dieses Programm nicht einmal so groß ist wie der ELF-Header! Dieses Bit des ausführbaren Golfspiels verfälscht den ELF-Header und den Programm-Header, sodass sie die gleichen Bytes in der Datei belegen können, und fügt unser Programm in einige nicht verwendete Bytes innerhalb des Headers ein. Linux liest den Header immer noch gerne und startet die Ausführung an der Stelle,0x20
an der er sich für immer dreht.quelle
.com
auf DOS wäre viel kürzer :)yasm && ld
macht ausführbare Dateien nur ca. 1k.INTERCAL,
4218 BytesIdee aus dem Kommentar von @ flawr.
EDIT: Heiliger Mist, INTERCAL ist eigentlich kürzer als C #. Ich weiß nicht, ob das jemals zuvor passiert ist ...
42-Byte-Version
quelle
comefrom
PLEASE
?Perl , 6 Bytes
Von
perldoc -f redo
:Ich sehe es nicht
redo
zu oft im Seriencode, aber es ist großartig für Golf! Vergleichen Sie die oben auf den kürzesten Äquivalentefor
,while
undgoto
:quelle
do$0
, das nicht als Einzeiler funktioniertperl -e
.do EXPR
liest aus einer Datei.> <> , 1 Byte
Ein einzelnes Leerzeichen führt dazu, dass> <> in eine Endlosschleife von NOPs gerät
Andere gültige Einzelzeichenprogramme (ohne Speicherbedarf) sind wie folgt:
Außerdem besagen die Regeln, dass in Ihrem Programm möglicherweise nicht genügend Speicher vorhanden ist. In diesem Fall können der Liste der gültigen 1-Byte-Programme die folgenden Zeichen hinzugefügt werden:
quelle
` `
mit dem Codeblock.>
?Motorola MC14500B Maschinencode ,
0,50 ByteErläuterung
Gemäß dem Handbuch ist das System so konfiguriert, dass es eine Schleifensteuerungsstruktur aufweist. Der Programmzähler zählt bis zu seinem höchsten Wert, springt auf Null zurück und zählt wieder hoch.
quelle
LOLCODE , 24 Bytes
quelle
HAI
undKTHXBYE
sind nicht erforderlich.C, 15 Bytes
Ja, es ist möglich,
main()
rekursiv aufzurufen . Wenn Sie einen Compiler haben, der die Tail-Call-Optimierung-O2
ausführt (z. B. gcc mit der Option), ist er nicht einmal fehlerfrei: Der Compiler ist intelligent genug, um den Funktionsaufruf in einen zu verwandelngoto
.quelle
-O2
Option hinzufügen .-O2
Optimierung eher zu einem "nice-to-have" als zu einer Anforderung.l(){l();}
und kompilieren Sie ihn mit den Optionen-Dl=main -O2
main(){for(;;);}
.Labyrinth , 1 Byte
Ein Labrinth-Programm führt dieselbe Anweisung immer wieder aus, wenn keine Nachbarn vorhanden sind. Sie werden auch nicht enden, bis sie die
@
Anweisung ausführen .quelle
Vim , 7 Tastenanschläge
Öffnen Sie den Editor, vorzugsweise ohne geladene Skripte, zum Beispiel so über die Befehlszeile:
vim -u NONE
Vimscript,
fünfzehn8 BytesFügen Sie es in ein Skript ein oder führen Sie es direkt aus, indem
:
Sie im normalen Modus zuerst den Doppelpunkt ( ) drückenquelle
wh1|endw
qq
startet die Aufnahme in denq
Puffer.@q
Gibt wieder, was sich imq
Puffer befindet (an dieser Stelle nichts).q
stoppt die Aufnahme und gibt dann wieder,@q
was sich imq
Puffer befindet. Dies sind zu diesem Zeitpunkt die Tastenanschläge@q
. Also@q
Wiederholungen@q
Wiederholungen@q
.... auch, wennq
ich so viele schreibe, schmerzt mein Gehirn.Netzhaut , 3 Bytes
Wenn eine einzelne Datei angegeben wird, verwendet Retina eine Zählstufe und ersetzt die Eingabe durch die Anzahl der Übereinstimmungen, die für die angegebene Regex gefunden wurden. Hier ist der Regex
0
. Jetzt wird+
die Bühne so lange wiederholt, wie sich das Ergebnis gegenüber der vorherigen Iteration ändert. Was genau passiert also?0
wird mit der leeren Eingabe abgeglichen und ergibt null Übereinstimmungen. Das Ergebnis ist also0
. Dies unterscheidet sich von der Eingabe, daher führen wir dies erneut aus.0
wird mit der vorherigen Ausgabe abgeglichen0
, die jetzt eine Übereinstimmung ergibt ... das Ergebnis ist also1
.0
wird mit der vorherigen Ausgabe abgeglichen1
, was fehlschlägt ... das Ergebnis ist also0
.Das Ergebnis der Schleifeniteration wechselt zwischen
0
und1
, was a) sicherstellt, dass die Schleife nie beendet wird und b) sicherstellt, dass uns nicht der Speicher ausgeht, da die Zeichenfolge nicht wächst.Standardmäßig gibt Retina nur aus, wenn das Programm beendet wird, sodass nichts gedruckt wird (Sie können dieses Verhalten ändern, indem Sie ein
>
nach dem hinzufügen+
, wodurch die abwechselnden Nullen und Einsen gedruckt werden ).Seit 1.0 hat Retina auch traditionellere while-Schleifen, die Sie mit einer einfacheren Stufe verwenden können (bei der die Zeichenfolge nicht ständig geändert wird), für die jedoch tatsächlich mehr Bytes erforderlich sind. Eine Option wäre:
quelle
+`
leere Eingaben wiederholt abgleichen?2
nach ein paar Iterationen enden .BASIC (QBasic 4.5),
1053 BytesIn der Programmiersprache BASIC wird RUN verwendet, um die Programmausführung aus dem Direktmodus heraus zu starten oder um ein Überlagerungsprogramm aus einem Ladeprogramm heraus zu starten. - Wikipedia
Bearbeiten: Dies funktioniert in QBasic 4.5 laut @steenbergh ohne Zeilennummer
Hier ist die erste Version, die ich gepostet habe. Endlosschleife GOTO. Außerdem sind es 10 Bytes, was ein schöner Zufall ist!
quelle
1 GOTO SIGNUM PI
- Da konstante Ints zweimal als Shorts gespeichert werden, würde 1 4 Bytes betragen, aber SIGNUM und PI verwenden jeweils nur ein Byte. Ah, die alten Codierungstricks, die wir verwendet haben: D Ich bin mir nicht sicher, wie viel Speicher die Zeilennummern in Anspruch nehmen, also kann ich nur sagen, dass es 3+ (Zeilennummernspeicher) Bytes sind.TIS-Knotentyp T21-Architektur, 6 Byte
Tessellated Intelligence System-Knoten werden als "Verarbeitungs-" oder "Speicherknoten" klassifiziert. Speicherknoten speichern und rufen einfach Informationen ab und sind in diesem Fall irrelevant. Übrig bleiben die Verarbeitungsknoten. Der Knotentyp T21 (Basic Execution Node) ist der gebräuchlichste und einfachste (wie der Name vermuten lässt).
Technisch gesehen kann jeder Knoten als unabhängiger Computer betrachtet werden. Beim T21 handelt es sich um einen Computer mit zwei Speicherregistern (eines adressierbar, eines nicht) und einem Befehlssatz von 15 Befehlen. Es verfügt über genügend Speicher, um mit bis zu 15 Anweisungen programmiert zu werden. Alle TIS-Knoten verfügen über vier Ports, die sie mit den topologisch benachbarten Knoten verbinden. Das Lesen von einem Port bewirkt, dass dieser Knoten hängt, bis der Knoten am anderen Ende darauf schreibt, und das Schreiben an einen Port hängt, bis dieser Knoten es liest.
Möglicherweise können Sie jetzt feststellen, dass TIS-Knoten niemals dazu gedacht waren, selbst viel zu tun. Zusammen können sie jedoch ziemlich mächtig sein ... nun, für ihre Zeit. Aufgrund dieser Einschränkungen ist es sehr selten, dass jemand nur einen einzigen Knoten verwendet. In der Tat, ein Programm , das eine Eingabe nimmt und liefert Ausgangs basierend auf es müssen mindestens drei Knoten verwenden, wie TIS Systeme Eingang in den Einzugs
UP
Port eines Knotens in der oberen Reihe und von dem nehmen AusgabeDOWN
Port eines Knotens in der unteren Reihe. Es gibt drei Zeilen, sodass Daten mindestens drei Knoten passieren müssen, um nach unten zu gelangen.Aufgrund dieser Einschränkungen sollen TIS-Knoten im Allgemeinen in etwa wie folgt verwendet werden:
Aufgrund des begrenzten Platzes für Anweisungen und der Tatsache, dass Knoten einfach leise warten und keine Probleme beim Lesen von nicht vorhandenen Eingaben verursachen, wurde in ihrem Design eine Entscheidung getroffen, die sie für diese Herausforderung sehr gut macht. Ich zitiere aus dem Referenzhandbuch des TIS-100:
Perfekt! Endlosschleifen sind Standard für TIS-Knoten.
Ich habe diese Frage fast mit einer 0-Byte-Antwort beantwortet und behauptet, ein leerer Knoten sei eine Endlosschleife. Ich recherchierte jedoch weiter. Erstens besagt das obige Zitat, dass die Schleife nach dem Ausführen des letzten Befehls auftritt . Zusätzlich habe ich die Implementierung getestet. Jeder Knoten meldet zu jeder Zeit einen "Modus". Es ist nicht programmgesteuert verfügbar, soll jedoch das Debuggen vereinfachen. Hier sind die möglichen Modi:
Es stellt sich heraus, dass jeder Knoten, da er ein einzelner Computer ist, bestimmen kann, ob er Befehle ausführen muss oder nicht. Wenn nicht, bleiben sie im
IDLE
Status (spart wahrscheinlich Strom). Als solches konnte ich nicht guten Gewissens behaupten, dass es sich um eine "Schleife" handelte; Vielmehr saß jeder Knoten ruhig da und ging davon aus, dass die anderen etwas Wichtiges taten.Dieses Programm, das ich eingereicht habe, ist wirklich eine Endlosschleife, da die Ausführung den Status des Knotens auf "" setzt
RUN
. Es ist so einfach , wie man es erwarten würde,NOP
führtN
oOP
menarbeit. Sobald es nichts getan tut, kehrt zum Anfang des Codes:NOP
.Wenn Sie es finden unbefriedigenden , dass ich die T21 - Architektur bin missbrauchen um eine Schleife zu schaffen, biete ich eine alternative Lösung auf Kosten von 2 Bytes:
JRO 0
.JRO
bedeutetJ
umpR
elativeO
bedingungslos. Oder so etwas, denke ich. Es gibt keine vereinbarte erweiterte Form der Anweisungen. Nimmt jedenfallsJRO
ein numerisches Argument und überspringt die Ausführung relativ zur aktuellen Position um diesen Betrag. Überspringt beispielsweiseJRO 2
die darauf folgende Anweisung (nützlich, wenn von einer anderen Stelle zu dieser Anweisung gesprungen wird).JRO 1
Springt eine Anweisung vorwärts und macht sie zu einerNOP
.JRO -1
Springt einen Befehl zurück und führt den vorherigen Befehl alle zwei Zyklen aus, bis das Programm angehalten wird. Und natürlich,JRO 0
springt zu sich selbst und führt sich für immer aus.An diesem Punkt denken Sie vielleicht:
Gute Frage, danke fürs Fragen. Man könnte naiv denken, dass TIS-Programme genauso gezählt werden sollten, wie wir Programme in mehreren Dateien zählen: die Anzahl der Bytes in allen Knoten plus 1 Byte für jeden weiteren Knoten nach dem ersten. Die TIS-Golfgemeinschaft entschied jedoch, dass dies aus dem einfachen Grund ungerecht wäre, weil einige der Informationen, die für die Neuerstellung von Lösungen erforderlich sind, ignoriert werden. Die Nachbarn eines Knotens sind sehr wichtig, und diese Bewertungsmethode gibt Ihnen kostenlose Positionsinformationen. Stattdessen haben wir das Format übernommen, das vom gängigsten TIS-Emulator verwendet wird, dem verwirrend benannten TIS-100. (Randnotiz: Bitte benennen Sie Emulatoren nicht nach dem System, das sie emulieren. Es ist nicht klug, es ist nur ärgerlich und jeder muss ständig klarstellen, wovon er spricht.) Ganz einfach: Die 12 Knoten eines TIS-100 Die Geräte sind von links nach rechts und von oben nach unten nummeriert und überspringen alle Speicherknoten, die das emulierte System installiert hat. Ein Knoten numeriert
N
enthält# CODE\n# CODE\n CODE
ist wie so gespeichert:Und so wird ein Knoten mit der Nummer 0, der enthält,
NOP
gemäß seiner Darstellung in diesem Format bewertet:Sechs Bytes.
Da meine Antworten häufig in visuell interessanten Sprachen verfasst sind, können Sie dem TIS-100-Emulator bei der Ausführung dieses Programms auf YouTube zusehen . Wenn man bedenkt, was diese Herausforderung ist, weiß ich nicht, was Sie erwarten ...
quelle
JRO
stand für J ump bis R Elativ O ffset.C # ,
383736 BytesFür Schleife ohne Haltebedingung.
Die Rückkehr von main sollte ein int sein, aber da es niemals das Ende erreichen wird, sollte dies kompiliert werden. (Getestet in VS 2015 und 2013, funktioniert auch in Ideone ). Danke Geobits und MichaelS .
Eine kürzere Version, 35 Bytes, kann erreicht werden, aber Drucke, von
Process is terminated due to StackOverflowException
denen ich glaube, dass sie den dritten Punkt verletzen, nichts nach stderr zu drucken. Dank an MichaelBquelle
;
anstelle von verwenden{}
? Ich würde testen, aber Online-Dienste mögen keine Endlosschleifen.class B{static int Main()=>Main();}
Foo, 3 Bytes
Jedermanns Lieblingsprogrammiersprache! : D
quelle
Hexagony , 1 Byte
Ich weiß nicht viel über diese großartige Sprache, die von @ MartinBüttner erstellt wurde, aber nach allem, was ich gesehen habe, sollte sich diese endlos wiederholen, da es kein Hindernis gibt
@
, das Programm anzuhalten ..
ist einfach ein No-Op.quelle
Perl, 4 Bytes
Führt sich wiederholt aus.
quelle
do EXPR
aus einer Datei gelesen wird, was technisch gesehen eine Eingabe wäre, aber das OP stellte klar, dass Datei-E / A akzeptabel ist. Das wirklich Coole ist, dass dies im Gegensatz zu der Entsprechung in Bash keine neuen Prozesse auslöst und somit unbegrenzt fortgesetzt wird, ohne dass Speicher- oder Prozessgrenzen überschritten werden.Gammaplex , 0 Bytes
In Gammaplex ist es nicht möglich, ein Programm zu schreiben, das keine Endlosschleife ist. Also schreibe ich einfach ein Programm, das keine Eingabe / Ausgabe verwendet.
quelle
Pyth, 2 Bytes
Pyth erwartet Token nach dem Forever-Operator. (Das ist ein Leerzeichen.)
quelle
Bash + BSD Coreutils,
23 22 14 6 56 Bytesyes
gibt "y" für immer aus;>&-
schließt STDOUT.Vielen Dank an @Dennis und @ThisSuitIsBlackNot für die Hilfe bei der Größenreduzierung!
quelle
$0
ein Shellscript erstellen und ausführen, es ruft sich für immer auf.while :;do :;done
sind nur 17 Bytes.ping>&- 0
funktioniert unter Linux, wobei0
localhost zugeordnet ist.yes
! (Ich habe überlegt,yes
aber es ist mir nichtyes>/dev/null
Common Lisp, 6 Zeichen
quelle
(do()(()))
.do
, den Leser in eine Endlosschleife zu bringen, aber ich verstehe nicht, wie ich es in Kürze machen soll. Es scheint, dass nichts schlägt(loop)
.Spaltung , 1 Byte
Es gibt genau 4 Ein-Byte-Lösungen:
Diese vier Buchstaben zeigen an, dass ein Atom dort beginnt (in der entsprechenden Richtung). Eine davon ist erforderlich, da das Programm ohne Atom sofort beendet wird. Da der Quellcode nur ein Zeichen groß ist, wird das Atom sofort umgebrochen und dieselbe Zelle erneut ausgeführt. Nach dem Start des Programms wird jedoch
UDLR
einfach ein eingehendes Atom in die entsprechende Richtung abgelenkt, sodass es in diesem Fall zu No-Ops wird.quelle