Kürzester Code für unendliche Ausgaben

121

Schreiben Sie den kürzesten Code, der zu einer unendlichen Ausgabe führt.

Das ist alles. Ihr Code wird nur disqualifiziert, wenn er irgendwann keine Ausgabe mehr produziert. Wie immer im Codegolf gewinnt der kürzeste Code.

Hier ist eine Liste von Antworten, die meiner Meinung nach wirklich klug sind, damit sie Anerkennung finden:

Bestenliste

tbodt
quelle
118
Alle Antworten werden nicht beantwortet, da die Erde irgendwann von der Sonne verschluckt wird und das Universum irgendwann stirbt: P
Türklinke
17
Zählt "Unendlich, bis Ihr Computer abstürzt"? <_ <
Izkata
5
Wenn ich meine in Piet schreibe , kann ich die Pixel des Texts zählen, die die anderen Programme verwendet haben? Ich glaube, das kleinstmögliche sich wiederholende Piet-Programm wäre 6 Pixel. Das schlägt Befunge, wenn "off" -Pixel noch zählen.
DampeS8N
9
@Izkata Jede Antwort, die Ihren Computer zum Absturz bringt, ist ebenfalls zulässig: D
ɐɔıɐɔuʇǝɥʇs
7
@Doorknob Die Herausforderung besteht also darin, in endlicher Zeit eine unendliche Ausgabe zu erzeugen . Hört sich einfach an.
Sanchises

Antworten:

212

Befunge (1)

.

Ausgänge 0für immer. Es funktioniert, weil in Befunge Zeilen herumlaufen und man bekommt, 0wenn man aus dem leeren Stapel knallt .

Marinus
quelle
6
Ich denke, wir haben einen Gewinner.
Primo
96
Ich schwöre, ich hatte hier irgendwo einen Java-Kurs, der kürzer war. +1
10b0
56
Dieser eine Punkt hat mir jetzt mehr Ansehen verschafft als meine nächsten beiden Antworten zusammen.
Marinus
3
Aw ... das ist nicht fair :) Lass es uns so machen: Ich verkleinere das Bild um ein paar Pixel und wir zeigen es sehr klein an. Damit es wie ein Punkt aussieht? Und nenn es mal? :)
Benjamin Podszun
4
Warum ist das nicht die akzeptierte Antwort?
Claudiu
101

x86 .COM Executable, 7

in hex:

b8 21 0e cd 10 eb fc

Die anderen benötigen mindestens Kilobyte an Systembibliotheken und Laufzeit. Zurück zum Wesentlichen:

$ echo -ne '\xb8!\xe\xcd\x10\xeb\xfc' > A.COM
$ dosbox A.COM

Ausgabe

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:

        mov     ax, 0x0e21
again:  int     0x10
        jmp     again

Die Ausgabe erfolgt allesamt im intAufruf - 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.

AlliedEnvy
quelle
2
Beeindruckend. Das ist wirklich gut
bis zum
46
Eine niedrige Maschinencodelänge sollte mehr Punkte wert sein als Hochsprachen.
pwned
12
Dies ist der kürzeste Code im eigentlichen Sinne.
Mikrobier
4
Es funktioniert nicht nur, es funktioniert auch schneller als alle anderen Einträge. :)
Thane Brimhall
14
@ThaneBrimhall was natürlich die wichtigsten Kriterien , die von weitem für eine Endlosschleife ... Wenn mein Computer auflegt, will ich es es auf die effizienteste Art und Weise zu tun!
Kratenko
91

Windows Batch-Datei, 2 Zeichen

%0

Nennt sich unendlich.

teh_senaus
quelle
12
Schließen Sie den zweiten Platz, Mann. Gut gemacht. Ich habe nur eine Antwort gesehen, bei der Batch gewonnen hat.
Unclemeat
Es ist wirklich großartig!!!
Qwertiy
Das ist fantastisch!
Patrick Purcell
So funktioniert es: %0hat kein @, also würde es ständig so etwas ausgeben ...> %0. Dies kann jedoch manchmal den gesamten Arbeitsspeicher verschlingen, da es rekursiv ist.
Erik der Outgolfer
2
@EriktheOutgolfer könnte ? Wie wird dies nicht irgendwann aufgrund einer unendlichen Rekursion abstürzen? Ich verstehe nicht, wie das für mehrere Stunden weitergehen könnte
phil294
68

Befunge 98 - 2

,"

Ausgänge ",,,,,,,,,,," für die Ewigkeit.

AndoDaan
quelle
2
Eigentlich etwas schlau.
2.
Danke. Es ist seltsam, dass die Version "," Leerzeichen ausgibt (oder ". 32 32 32), wobei die gebräuchlichste b98-Implementierung verwendet wird. Keine Ahnung, woher es kommt.
AndoDaan
1
Es ist schade, dass es unter 82.395 wirklich beschissenen Antworten begraben ist.
voraussichtlich
7
@tbodt Nun, gemäß der Spezifikation hat mein kleines Programm die ganze Ewigkeit Zeit, sich seinen Weg nach oben zu bahnen. Also ... Daumen
drücken
@AndoDaan: "erstellt eine Zeichenfolge aus einem Komma und INT_MAX-2-Leerzeichen und gibt dann das letzte Leerzeichen aus. Der Stapel wird sich also selbst mit einem Komma aus INT_MAX-3-Leerzeichen füllen, was nicht wirklich effizient ist.
YoYoYonnY
62

sh, 3 Bytes

yes

Ausgänge ykontinuierlich

klingt.net
quelle
10
Obwohl yeses sich um eine externe Binärdatei handelt und nicht Teil der Bash ist (genau genommen).
Bob
55
In der Bash ist (fast) alles eine externe Binärdatei.
Johannes Kuhn
5
Normalerweise haben Sie keinen Alias y=yesund wenn Ihr System nicht esoterisch ist, können Sie davon ausgehen, dass yessich dieser in Ihrem befindet $PATH(siehe GNU Core Utilities ). Mit Ihrer Logik ist es möglich, für jede Lösung seltsame Konstellationen anzunehmen.
klingt.net
5
Richtig, aber dies ist nicht nur eine bashFunktion: Es ist ein POSIX-Shell- Grundbestandteil der Kern-Utils . (Dh: Bitte ändern Sie den Titel für sh: 3 Zeichen ;-)
F. Hauri
2
Wie der Technosaurus sagt, ist es in der Busybox eine eingebaute Funktion, aber in sh ist es nicht so, dass Sie stattdessen sh + coreutils sagen müssen.
Erik der Outgolfer
42

Haskell: 8 Zeichen

Alter Thread, aber ein lustiger ist

 fix show

in Haskell wird gedruckt

\\\\\\\\\\\\\....

für immer, da es im Grunde läuft

 let x = show x in x

Es weiß, dass xes 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.

jozefg
quelle
... Wow. Jetzt frage ich mich, ob fix$showes ästhetischer gewesen wäre :-)
John Dvorak
7
Da dies erforderlich import Data.Functionist 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 "\" \\\ "\\\\\\" \\\\\\\\\\\\ "\\\\\\\\\\\\\\ "."
Anders Kaseorg
36

Windows-Batchdatei, 8 Zeichen

:a
goto a
Patrick Purcell
quelle
1
Dies erzeugt keine unendliche Ausgabe, oder ...?
Türklinke
38
es funktioniert ... ohne @echo aus gibt es "goto a" aus, bis Sie es schließen
Patrick Purcell
11
Wir brauchen mehr BAT hier
Einacio
35
Ich zähle zehn Zeichen: :a\r\ngoto aweil Windows CRLF verwendet
wchargin
1
@WChargin Ich habe es gerade mit einem Hex-Editor überprüft. 3a 61 0a 67 6f 74 6f 20Funktioniert auf meinem Windows 8 ...: P
YoYoYonnY
32

Gehirnfick, 4

+[.]

Alternative,

-[.]
Pappkarton
quelle
8
Weder druckbare Zeichen \x01noch \xFFsolche. Ich denke, das war jedoch keine Voraussetzung: - /
John Dvorak
Eine Möglichkeit, druckbare Zeichen auszugeben, besteht darin, das + durch zu ersetzen.
Dies
31

Java, 54 Zeichen

Bester Versuch in Java:

class A{static{for(int i=0;i<1;)System.out.print(1);}}
Rich Smith
quelle
7
Funktionell, regelkonform, golfen. Ich frage mich, warum es abgelehnt wurde.
manatwork
14
Verbietet Java das klassische for(;;)Muster? Was ist while(true)?
CodesInChaos
17
@CodesInChaos, Java verbietet diese Muster normalerweise nicht und normalerweise würde ich sie für sauberer und idiomatischer halten. Hier versuchen wir jedoch, eine Endlosschleife hinter den Compiler zu schleichen (diese Formen führen dazu, dass der Compiler sich beschwert, dass der statische {} Block nicht beendet wird).
Rich Smith
2
@Mechanicalsnail Ja, statische Blöcke können seit Java 7 nicht mehr alleine ausgeführt werden.
Fabinout
1
@OliverNi Aber du kannst den staticBlock nicht benutzen .
Okx
30

Bash, 4 Bytes

$0&$

Ausgänge ./forever2.sh: line 1: $: command not found kontinuierlich.

Da $0im 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. topmeldet, 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.

Digitales Trauma
quelle
2
Vielleicht ein Verhalten von stdout oder ähnlich ...
MasterX244
1
Das Freigeben von Ressourcen konkurriert mit dem Verzweigen von Prozessen. Um den Prozess zu stoppen, können Sie ihn nicht beenden, da sich die PID nur ändert, wenn das Skript umbenannt wird und dies $0fehlschlägt.
Emmanuel
29

LOLCODE (36)

HAI IZ 1<2? VISIBLE "0" KTHX KTHXBYE 

Dachte, ich würde LOLCODE ausprobieren, hat eine überraschend große Menge an Funktionalität.

Giraffestock
quelle
2
Ich muss nicht nach stdio fragen.
Katze
In der repl.it-Version von LOLCODE brauchen Sie nicht HAIundKTHXBYE
MilkyWay90
24

JavaScript: 14

WARNUNG: Sie möchten dies wirklich nicht in Ihrem Browser ausführen

for(;;)alert()
zzzzBov
quelle
31
Aktivieren Sie einfach "Verhindern, dass diese Site weitere Dialogfelder öffnet".
Johannes Kuhn,
1
@JohannesKuhn nicht überprüfen, und Sie müssen einen Neustart
Ilya Gazman
8
Oder tun Sie einfach nichts und es wird keine weitere Ausgabe angezeigt.
Johannes Kuhn
Nur Laufen alert()gibt mir diesen FehlerError: Not enough arguments [nsIDOMWindow.alert]
Clyde Lobo
3
Ist es wirklich eine unendliche Ausgabe, wenn der Prozess blockiert und die Ausführung bis zur humanoiden Interaktion angehalten wird?
Morten Bergfall
24

Turing Machine - 6 Zeichen:

#s->1Rs

Wo #ist ein leeres Symbol (auf dem Band standardmäßig), sbeschreibt den einzigen vorhandenen (Start-) Zustand, 1gibt eine Ziffer aus, Rbedeutet Verschiebung nach rechts, sbleibt am Ende im gleichen Zustand.

Serge
quelle
3
Ich zähle 7 Zeichen !?
F. Hauri
9
In der vielleicht gebräuchlichsten 5-Tupel-Notation würde dies einfach als die 5 Zeichen s#1Rs(aktueller Zustand, aktuelles Symbol, zu schreibendes Symbol, Richtung zur Verschiebung, nächster Zustand) geschrieben.
Res
19

Haskell, 10

print[1..]

Ich denke das ist der kürzeste Code dazu

  1. Drucken Sie etwas aus.
  2. Erstellen Sie eine unendliche ShowDatenstruktur.

Für Interessierte gibt es:

[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,...
Shiona
quelle
4
Gibt es einen Grund, warum Sie sich für die magische Nummer 32 entschieden haben?
ike
12
Es wirkte nett und rund, füllte aber auch den Code-Block so gut wie möglich aus, ohne dass es einer nächsten Zeile bedurfte.
Shiona
2
Wenn der Computer über eine begrenzte Menge an Speicher verfügt, wird er möglicherweise beendet, wenn die Ganzzahl zu groß wird, um im Speicher zu bleiben.
Jeppe Stig Nielsen
3
@JeppeStigNielsen Ja. Eine Ganzzahl, die sogar ein Megabyte Speicher füllt, wäre jedoch 2 ^ (2 ^ 20) oder ungefähr 6,7 * 10 ^ 315652. Bis auf ein Gigabyte Speicher und die Zahl würde 2 ^ (2 ^ 30) werden, ein Monster mit fast einer halben Milliarde Ziffern. Ich bin mir ziemlich sicher, dass uns der Hitzetod des Universums treffen würde, wenn wir versuchen würden, die Serie zu drucken, bevor die Erinnerung ausgeht. Und Festplattenausfall schon lange vorher.
Shiona
5
In den Kommentaren unter dem OP wird erwähnt, dass "Unendlich, bis Ihr Computer abstürzt" ebenfalls zählt.
11684,
19

Marbelous 4

24MB

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:

MB() {
    print('$');
    while(true) MB();
}

Eine Lösung ohne unendliche Rekursion 11

24@0
@0/\..

Dies funktioniert, indem das Literal zwischen zwei Portalen durchlaufen wird @0, wenn die 24 die untere trifft, wird @0es 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:

MB() {
    while(true) print '$'
}

Eine kürzere Lösung ohne unendliche Rekursion 9

24
\\/\..

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:

MB() {
    List charlist = ['$'];
    while(true) {
        charlist.add(charlist[0];
        charlist.add(charlist[0];
        charlist.pop();
        print(charlist.pop());
        // Wait, what?
    }
}

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 den 24Marmor durch FFund 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.

Überakteur
quelle
machen Sie Ihre "/ \ / \" "\\ / \", um zu vermeiden, dass ein zusätzlicher Marmor von der linken Kante erzeugt wird? rein ästhetische Verbesserung.
Sparr
@Sparr, Punkt genommen, ich habe den Beitrag bearbeitet.
Overactor
5
Sollte diese Lösung nicht 25165824 Byte (24 MB) sein? ; P
HyperNeutrino
18

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).

main(){main(puts(""));}
ugoren
quelle
1
22 Zeichen: putc(0)(oder 1 oder 2, ... oder 9). Funktioniert das?
CompuChip
@CompuChip, putcbenötigt 2 Parameter.
Ugoren
10
@tdbot, beachte nur, dass dies die akzeptierte Antwort ist. Ich weiß das Kompliment zu schätzen, kann aber nicht verstehen, warum. Es gibt eine offensichtlich kürzere Antwort
ugoren
@ tbodt, nicht tdbot. ftfy
nyuszika7h
5
@ nyuszika7h, Auf diese Weise könnte ich zeigen, wie bescheiden ich bin, während ich mich an die 15 Wiederholungen halte.
Ugoren
14

Python 3: 15, 17 oder 18 Zeichen

Die Antwort von mdeitrick ist in Python 3 länger und ersetzt dasprint Anweisung durch einen Funktionsaufruf (15 Zeichen):

while 1:print()

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ück None, was! = 9 ergibt, was es zu einer Endlosschleife macht. Das 8ist ein No-Op, das pass(18 Zeichen) ersetzt:

    while print()!=9:8
    
  • iter(print, 9)Definiert eine Iterable, die die Ausgabe von zurückgibt, print()bis sie gleich ist 9(was niemals passiert). anyverbraucht die Eingabe iterabel auf der Suche nach einem wahren Wert, der nie eintrifft, da er print()immer zurückgibt None. (Sie könnten auch verwendenset den gleichen Effekt verwenden.)

    any(iter(print,9))
    
  • Oder wir können das iterable konsumieren, indem wir testen, ob es 8(17 Zeichen) enthält:

    8in iter(print,9)
    
  • Oder entpacken Sie es mit dem splat-Operator :

    *_,=iter(print,9)
    
  • 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):

    8(*iter(print,9))
    
Mechanische Schnecke
quelle
*iter(print,1),funktioniert und hat nur 15 Zeichen, verbraucht aber ziemlich viel Speicher.
Ivzem
14

Piet - 3 Codels

http://www.pietfiddle.net/img/auQXtFXATg.png?cs=15

Gibt eine unendliche Anzahl von Einsen aus

captncraig
quelle
14

x86 .COM Ausführbare Datei, 5 Byte

endlose Ausgabe von ASCII-Zeichensätzen

in hex:

40 CD 29 FF E6

in asm:

inc ax
int 0x29
jmp si

Erläuterung:

inc ax erhöht das Register AX um eins. int 0x29ist 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 siist 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

Höllenstimmung
quelle
13

Bitxtreme , 0,25 Bytes

Binäre Darstellung:

00

Aus der Dokumentation:

Das erste Bit jedes Paares ist ein Zeiger auf die Speicherposition, die den vom Akkumulator zu subtrahierenden Wert enthält. Das Ergebnis wird an derselben Speicherposition gespeichert, auf die der Operand zeigt. Wenn das Ergebnis negativ ist (die Bits sind in Zweierkomplementdarstellung), wird das zweite Bit des Paares zum aktuellen PC, Modulo 2, hinzugefügt.

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 (a0 ) 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 .

Lirtosiast
quelle
12

Zusammenfassung: Ruby - 9, Golfscript - 6,> <> - 2, Whitespace - 19, Perl - 2

Eine 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

loop{p 1}

Druckt einfach 1 fortlaufend in separaten Zeilen.

Auch eine Reihe von Alternativen:

loop{p''} # prints [ "" ]  on separate lines continually
loop{p p} # prints [ nil ] on separate lines continually

10-Zeichen-Lösung:

p 1while 1

Ich war tatsächlich überrascht, dass ich den Zwischenraum zwischen dem ersten 1und dem letzten entfernen konnte while, aber anscheinend funktioniert es

Golfscript, 6

{1p}do

Mein erstes Golfscript Programm! : P

> <> ( Fisch ), 2

1n

Leerzeichen , 19

lssslssstltlsslslsl

Wobei sein Leerzeichen, tein Tabulator und lein Zeilenvorschub dargestellt werden.

Türknauf
quelle
11
Jedes Mal, wenn jemand die Worte "Ich habe kein Perl" eingibt, tötet Gott ein Kätzchen.
Primo
2
@primo: P Naja, zumindest tue ich das jetzt.
Türklinke
2
Das ist Code Golf. Bitte erstellen Sie eine Antwort pro Einreichung.
JB
21
@primo Gut, ich hasse Katzen. Und ich habe kein Perl.
SQB
5
Das GS-Programm wird {1p}donur gedruckt 1und 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 von 1pgepoppt wird und false testet.) Das Hinzufügen eines Dup wird jedoch funktionieren, dh {1.p}do(bei 7 Bytes).
Res
12

C 25, 24

main(){main(puts("1"));}
Rozuur
quelle
4
s/while/main/
Ugoren
2
Ich bin nicht sicher, ob es in C eine Stackoverflow-Ausnahme gibt, aber wenn Ihnen der Speicher ausgeht, passiert etwas Schlimmes.
Ilya Gazman
9
Tailcall-Optimierung ftw.
Johannes Kuhn
4
@JohannesKuhn: das ist kein tail call. Wenn es so gewesen wäre return main(puts("1")), wäre es ein Tail Call gewesen.
Marinus
4
@psgivens. In der Funktion ca ohne Parameter können beliebig viele Parameter verwendet werden. Nur eine Signatur von methodName(void)akzeptiert genau null Parameter.
James Webster
12

> <> (Fisch) , 2

Eine kreative Art, die unendliche Codebox von Fischen zu nutzen:

"o

Da der Befehlszeiger nach Erreichen des Endes an den Zeilenanfang zurückkehrt, kann dieser Code im Wesentlichen als gelesen werden

"o"o

was bedeutet, 'lies den String "o" und gib ihn dann aus'.

Sie können den Code hier testen

Thijs ter Haar
quelle
11

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.

warn;do$0

In eine Datei speichern, diese Datei ausführen und Sie erhalten zB:

Warning: something's wrong at /tmp/foo.pl line 1.
Warning: something's wrong at /tmp/foo.pl line 1.
Warning: something's wrong at /tmp/foo.pl line 1.
Skibrianski
quelle
Könnten Sie dies nicht mit kürzer machen say(was immer eine neue Zeile ausgibt, auch wenn es kein Argument von irgendwoher findet) anstatt warn? (Dies erfordert die Auswahl einer modernen Perl-Variante unter Verwendung von -M5.010, aber das zählt nicht für Ihre Zeichenanzahl.)
10

dc , 7

[pdx]dx

druckt unendlich oft 'pdx \ n'.

res
quelle
10

VBA: 12

Audio wird ausgegeben, richtig?

do:beep:loop

Fügen Sie das für ein bisschen "Spaß" in die Lieblingsmakro-fähige MS Office-Datei Ihres Lieblingskollegen ein!

Private Sub Workbook_Open()
    Do:Beep:Loop
End Sub

Bonuspunkte, wenn sie Kopfhörer verwenden.

JesterBLUE
quelle
Verdammt, ich habe die Antworten durchgesehen, um zu sehen, ob noch jemand darüber nachgedacht hat, die Glockenschrift auszudrucken. +1
mbomb007
9

Seed , 4 Bytes

99 5

Probieren Sie es online! Ausgänge11 unendlich

Erzeugt das folgende Befunge-98-Programm:

[glzgx"Lz^v*M7TW!4:wi/l-[, s44~s;|Sa3zb|u<B/-&<Y a@=nN>Nc%}"gq!kCW $1{2hyzABRj*glr#z(@Zx@xT=>1'.b
/

Probieren Sie es online!


Der relevante Teil ist genau dies:

[>1'.b
/

bdrückt 11auf den Stapel und .druckt ihn aus. 1und49 werden auch auf den Stapel geschoben, aber nie gedruckt.

Animation des laufenden Codes:

Bildbeschreibung hier eingeben

ovs
quelle
1
Wird dies nicht irgendwann zu wenig Speicher, wenn die Werte kontinuierlich auf den Stapel verschoben werden, ohne dass ein Popping stattfindet?
Caird Coinheringaahing
8

C 26 25 24 (keine Rekursion)

main(){for(;;puts(""));}

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.

Stuntddude
quelle
2
Sie können einen Charakter for(;;)while(!
abscheren,
1
nein, !da es immer wieder etwas ausgibt\n
l4m2
7

R, 13 Zeichen

repeat cat(1)
Plannapus
quelle
repeat cat(1)sollte funktionieren
Dason
@Dason du hast recht. Ich habe keine Ahnung, warum ich darauf bestehe, sie jedes Mal zu setzen.
Plannapus
7

PowerShell 2.0: 17 11 8

Meine anfängliche Lösung:

while(1 -eq 1){1}

Danke an res:

while(1){1}

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.

for(){1}
Iszi
quelle
1
Versuchen Sie es while(1){1}.
Res
@res Ich wollte es mit um zwei kürzen, 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.
Iszi,
Wenn Sie möchten, können Sie es auch bearbeiten.
Res
6
Versuchen Sie es for(){1}.
Danko Durbić
@ DankoDurbić Kannst du erklären, warum das funktioniert? Ich verstehe es nicht ganz. Scheint, es sollte mir ein Fehler sein.
Iszi