var QUESTION_ID=13152,OVERRIDE_USER=8611;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:
Befunge (1)
Ausgänge
0
für immer. Es funktioniert, weil in Befunge Zeilen herumlaufen und man bekommt,0
wenn man aus dem leeren Stapel knallt .quelle
x86 .COM Executable, 7
in hex:
Die anderen benötigen mindestens Kilobyte an Systembibliotheken und Laufzeit. Zurück zum Wesentlichen:
Sie können das 2. Byte (
0x21
, oder!
) ändern, um die Ausgabe zu ändern.Verwendet einen BIOS-Interrupt für die Ausgabe. Benötigt kein DOS, aber ich hatte kein QEMU eingerichtet.
Erläuterung
Der Maschinencode entspricht der folgenden Baugruppe:
Die Ausgabe erfolgt allesamt im
int
Aufruf - anhand dieser Referenz gibt int 0x10 mit 0x0e in AH das Byte in AL auf dem Bildschirm aus.Wenn wir wissen, dass das Register AX ein 16-Bit-Wort ist, das aus AH im High-Byte und AL im Low-Byte besteht, können wir eine zusätzliche Last (und damit ein Byte im Maschinencode) sparen, indem wir sie zusammen laden.
quelle
Windows Batch-Datei, 2 Zeichen
Nennt sich unendlich.
quelle
%0
hat kein@
, also würde es ständig so etwas ausgeben...> %0
. Dies kann jedoch manchmal den gesamten Arbeitsspeicher verschlingen, da es rekursiv ist.Befunge 98 - 2
Ausgänge ",,,,,,,,,,," für die Ewigkeit.
quelle
sh, 3 Bytes
Ausgänge
y
kontinuierlichquelle
yes
es sich um eine externe Binärdatei handelt und nicht Teil der Bash ist (genau genommen).y=yes
und wenn Ihr System nicht esoterisch ist, können Sie davon ausgehen, dassyes
sich dieser in Ihrem befindet$PATH
(siehe GNU Core Utilities ). Mit Ihrer Logik ist es möglich, für jede Lösung seltsame Konstellationen anzunehmen.bash
Funktion: Es ist ein POSIX-Shell- Grundbestandteil der Kern-Utils . (Dh: Bitte ändern Sie den Titel für sh: 3 Zeichen ;-)Haskell: 8 Zeichen
Alter Thread, aber ein lustiger ist
in Haskell wird gedruckt
für immer, da es im Grunde läuft
Es weiß, dass
x
es sich um eine Zeichenfolge handelt, und das erste Zeichen"
muss mit einem Escapezeichen versehen werden. Es\"
muss jedoch\
mit einem Escapezeichen versehen werden\\\x
, und so weiter und so fort.quelle
fix$show
es ästhetischer gewesen wäre :-)import Data.Function
ist und die Zeichenfolge zurückgegeben wird, anstatt sie zu drucken, stelle ich die Fairness der Zeichenanzahl in Frage. Außerdem ist die Zeichenfolge tatsächlich "\" \\\ "\\\\\\" \\\\\\\\\\\\ "\\\\\\\\\\\\\\ "."Windows-Batchdatei, 8 Zeichen
quelle
:a\r\ngoto a
weil Windows CRLF verwendet3a 61 0a 67 6f 74 6f 20
Funktioniert auf meinem Windows 8 ...: PGehirnfick, 4
Alternative,
quelle
\x01
noch\xFF
solche. Ich denke, das war jedoch keine Voraussetzung: - /Java, 54 Zeichen
Bester Versuch in Java:
quelle
for(;;)
Muster? Was istwhile(true)
?static
Block nicht benutzen .Bash, 4 Bytes
Ausgänge
./forever2.sh: line 1: $: command not found
kontinuierlich.Da
$0
im Hintergrund, stirbt jedes Elternteil nach dem ungültigen Befehl$
, sodass Stapel / Speicher nicht aufgebraucht werden und dies auf unbestimmte Zeit fortgesetzt werden sollte.Seltsamerweise wird die Ausgabe mit der Zeit immer langsamer.
top
meldet, dass die CPU-Auslastung des Systems nahezu 100% beträgt, es jedoch Speicher- oder CPU-Schwerstprozesse gibt. Vermutlich wird eine gewisse Ressourcenzuweisung im Kernel immer weniger effizient.quelle
$0
fehlschlägt.LOLCODE (36)
Dachte, ich würde LOLCODE ausprobieren, hat eine überraschend große Menge an Funktionalität.
quelle
HAI
undKTHXBYE
JavaScript: 14
quelle
alert()
gibt mir diesen FehlerError: Not enough arguments [nsIDOMWindow.alert]
Turing Machine - 6 Zeichen:
Wo
#
ist ein leeres Symbol (auf dem Band standardmäßig),s
beschreibt den einzigen vorhandenen (Start-) Zustand,1
gibt eine Ziffer aus,R
bedeutet Verschiebung nach rechts,s
bleibt am Ende im gleichen Zustand.quelle
s#1Rs
(aktueller Zustand, aktuelles Symbol, zu schreibendes Symbol, Richtung zur Verschiebung, nächster Zustand) geschrieben.Haskell, 10
Ich denke das ist der kürzeste Code dazu
Show
Datenstruktur.Für Interessierte gibt es:
quelle
Marbelous 4
Marbelous macht sich hier überraschend gut. Dies wird eine unendliche Anzahl von Dollarzeichen ausgeben
$
, obwohl es das Stack-Limit ziemlich schnell erreicht.Wie es funktioniert.
24 ist ein Sprachenliteral, das vom Brett fällt und als entsprechendes ASCII-Zeichen an STDOUT ausgegeben wird. MB ist der Name, der der Hauptplatine implizit gegeben wird, da die Hauptplatine keine Eingabe hat, wird jeder Tick ausgelöst. Und da Zellen von links nach rechts ausgewertet werden, wird das Literal immer vor dem nächsten rekursiven Aufruf gedruckt.
Das ist ungefähr gleichbedeutend mit diesem Pseudocode:
Eine Lösung ohne unendliche Rekursion 11
Dies funktioniert, indem das Literal zwischen zwei Portalen durchlaufen wird
@0
, wenn die 24 die untere trifft, wird@0
es zur Zelle unter der oberen transportiert@0
. Wenn Sie auf der landen/\
, die ein Klonoperator ist, wird eine Kopie des Marmors (wörtlich) auf der linken Seite (zurück auf dem Portal) und eine weitere auf der rechten Seite platziert. Diese Kopie fällt dann vom Brett (da..
es sich um eine leere Zelle handelt) und wird auf STDOUT gedruckt. Im Pseudocode würde dies bedeuten:Eine kürzere Lösung ohne unendliche Rekursion 9
Dieser wirft ständig den Marmor zwischen einem Kloner und einem Deflektor herum und legt eine Kopie auf die Zelle ganz rechts, um sie vom Brett fallen zu lassen. Im Pseudocode würde das ungefähr so aussehen:
Hinweis
Die
..
Zellen werden auf den beiden letzten Brettern benötigt, da die Murmeln sonst vom Brett landen (und weggeworfen werden). Für zusätzlichen Spaß ersetzen Sie den24
Marmor durchFF
und die leere..
Zelle durch a??
, wodurch jeder Marmor in einen Marmor zwischen 0 und dem aktuellen Wert umgewandelt wird, bevor Sie ihn ablegen. Ratet mal, wie das auf STDOUT aussehen würde.quelle
C 23 Zeichen
Etwas kürzer als die bisher beste C / C ++ - Antwort. Gibt leere Zeilen unendlich aus (aber wenn diese ohne Optimierung kompiliert werden, läuft der Stapel über).
quelle
putc(0)
(oder 1 oder 2, ... oder 9). Funktioniert das?putc
benötigt 2 Parameter.Python 3: 15, 17 oder 18 Zeichen
Die Antwort von mdeitrick ist in Python 3 länger und ersetzt das
print
Anweisung durch einen Funktionsaufruf (15 Zeichen):Dies ist immer noch die kürzeste, die ich in Python 3 gefunden habe. Es gibt jedoch einige interessantere Möglichkeiten zum Drucken in einer Endlosschleife, die nur wenige Zeichen länger sind.
print()
Gibt zurückNone
, was! = 9 ergibt, was es zu einer Endlosschleife macht. Das8
ist ein No-Op, daspass
(18 Zeichen) ersetzt:iter(print, 9)
Definiert eine Iterable, die die Ausgabe von zurückgibt,print()
bis sie gleich ist9
(was niemals passiert).any
verbraucht die Eingabe iterabel auf der Suche nach einem wahren Wert, der nie eintrifft, da erprint()
immer zurückgibtNone
. (Sie könnten auch verwendenset
den gleichen Effekt verwenden.)Oder wir können das iterable konsumieren, indem wir testen, ob es
8
(17 Zeichen) enthält:Oder entpacken Sie es mit dem splat-Operator :
Der seltsamste Weg, den ich mir vorgestellt habe, ist die Verwendung der Splat - Destrukturierung innerhalb eines Funktionsaufrufs
function(*iterable)
. Es scheint, dass Python versucht, die gesamte Iterationsdatei zu konsumieren, bevor der Funktionsaufruf ausgeführt wird - auch wenn der Funktionsaufruf gefälscht ist. Dies bedeutet, dass wir nicht einmal eine echte Funktion benötigen, da der Typfehler erst ausgelöst wird, nachdem die Iterationsdatei erschöpft ist (dh nie):quelle
*iter(print,1),
funktioniert und hat nur 15 Zeichen, verbraucht aber ziemlich viel Speicher.Piet - 3 Codels
Gibt eine unendliche Anzahl von Einsen aus
quelle
x86 .COM Ausführbare Datei, 5 Byte
in hex:
in asm:
Erläuterung:
inc ax
erhöht das Register AX um eins.int 0x29
ist die "Fast Put Char" -Routine von MSDOS, die einfach den Wert in AL (dem unteren Teil von AX) ausgibt und den Cursor um eins vorrückt.jmp si
ist nur ein seltsamer Weg, um wieder nach oben zu springen, da das Register SI auf fast jedem DOS-ähnlichen Betriebssystem 0x100 ist, wo auch ein .com-Programm startet;) Es ist auch möglich, stattdessen einen kurzen Sprung zu machen, was auch verwendet 2 Bytes.Quellen:
MSDOS-Startwerte
Größenkodierung WIKI
quelle
Bitxtreme , 0,25 Bytes
Binäre Darstellung:
Aus der Dokumentation:
Der Programmzähler und der Akkumulator werden auf Null initialisiert. dann wird der Inhalt des Speicherplatzes 0 vom Akkumulator subtrahiert. Dies ist zufällig 0, wodurch der Akku auf Null bleibt. Da es keinen Übertrag gab, wird das zweite Bit nicht zum Programmzähler hinzugefügt.
Der Programmzähler wird dann um 2 modulo 2 erhöht, um ihn an den Start zurückzusenden und eine Endlosschleife auszulösen. Bei jedem Schritt wird der spezielle Speicherplatz 0 geändert, wodurch sein Inhalt (a
0
) zur Ausgabe geschrieben wird.Es kann argumentiert werden, dass dieses Programm mit 1 Byte bewertet werden sollte, da der offizielle Interpreter in Python ein Auffüllen mit Nullen erfordert. Ich denke jedoch nicht, dass das Auffüllen mit Nullen wirklich Code ist .
quelle
Zusammenfassung: Ruby - 9, Golfscript - 6,> <> - 2, Whitespace - 19,
Perl - 2Eine Sprache, die ich kenne, und zwei, die ich noch nie zuvor verwendet habe: D
BEARBEITEN: Perl hat nicht funktioniert, als ich Perl zum Ausprobieren installiert habe :(
Rubin, 9
Druckt einfach 1 fortlaufend in separaten Zeilen.
Auch eine Reihe von Alternativen:
10-Zeichen-Lösung:
Ich war tatsächlich überrascht, dass ich den Zwischenraum zwischen dem ersten
1
und dem letzten entfernen konntewhile
, aber anscheinend funktioniert esGolfscript, 6
Mein erstes Golfscript Programm! : P
> <> ( Fisch ), 2
Leerzeichen , 19
Wobei
s
ein Leerzeichen,t
ein Tabulator undl
ein Zeilenvorschub dargestellt werden.quelle
{1p}do
nur gedruckt1
und beendet, da es sich bei dem Befehl do um eine Exec-Pop-Test-Sequenz handelt, die nur fortgesetzt wird, wenn der Befehl true testet. (Da es keine Eingabe gibt, ist der Stack anfangs ein Stack""
, der nach der Ausführung von1p
gepoppt wird und false testet.) Das Hinzufügen eines Dup wird jedoch funktionieren, dh{1.p}do
(bei 7 Bytes).C
25,24quelle
s/while/main/
return main(puts("1"))
, wäre es ein Tail Call gewesen.methodName(void)
akzeptiert genau null Parameter.> <> (Fisch) , 2
Eine kreative Art, die unendliche Codebox von Fischen zu nutzen:
Da der Befehlszeiger nach Erreichen des Endes an den Zeilenanfang zurückkehrt, kann dieser Code im Wesentlichen als gelesen werden
was bedeutet, 'lies den String "o" und gib ihn dann aus'.
Sie können den Code hier testen
quelle
Perl, 10 Zeichen
Hier ist eine weitere 10-Zeichen-Perl-Lösung mit einigen unterschiedlichen Kompromissen. Insbesondere ist zum Starten weder das Flag -n noch eine Benutzereingabe erforderlich. Allerdings frisst es das Gedächtnis bis ins Unendliche.
In eine Datei speichern, diese Datei ausführen und Sie erhalten zB:
quelle
say
(was immer eine neue Zeile ausgibt, auch wenn es kein Argument von irgendwoher findet) anstattwarn
? (Dies erfordert die Auswahl einer modernen Perl-Variante unter Verwendung von-M5.010
, aber das zählt nicht für Ihre Zeichenanzahl.)dc , 7
druckt unendlich oft 'pdx \ n'.
quelle
VBA: 12
Audio wird ausgegeben, richtig?
Fügen Sie das für ein bisschen "Spaß" in die Lieblingsmakro-fähige MS Office-Datei Ihres Lieblingskollegen ein!
Bonuspunkte, wenn sie Kopfhörer verwenden.
quelle
Seed , 4 Bytes
Probieren Sie es online! Ausgänge
11
unendlichErzeugt das folgende Befunge-98-Programm:
Probieren Sie es online!
Der relevante Teil ist genau dies:
b
drückt11
auf den Stapel und.
druckt ihn aus.1
und49
werden auch auf den Stapel geschoben, aber nie gedruckt.Animation des laufenden Codes:
quelle
C
262524 (keine Rekursion)Druckt endlose
'\n'
Zeichen. Dies ist ein Byte länger als die kürzeste C-Antwort, erfordert jedoch keine Tail-Call-Optimierung, um ein Überlaufen des Stacks zu vermeiden.quelle
for(;;)
while(!
!
da es immer wieder etwas ausgibt\n
R, 13 Zeichen
quelle
repeat cat(1)
sollte funktionierenPowerShell 2.0:
17118Meine anfängliche Lösung:
Danke an res:
Ich denke, Danko Durbić hat hier den Sieger. Ich bin mir nicht mal sicher, warum das funktionieren sollte, aber es funktioniert und mir fällt noch nichts kürzeres ein.
quelle
while(1){1}
.while($true){1}
aber Ihre Lösung gewinnt definitiv - das habe ich in PowerShell vergessen$true -eq 1
. Poste das als Antwort und ich gebe dir eine Stimme.for(){1}
.