Ich arbeite an einem Golf für Java und brauche eine Endlosschleife. Natürlich möchte ich nicht mehr Bytes ausgeben als nötig, insbesondere in einer so ausdrucksstarken Sprache.
Angenommen, ich habe Code, den ich ausführen möchte, ist die Grundlinie offensichtlich auf while(1>0)/*stmt*/
oder 10 zusätzliche Zeichen für eine einzelne Zeile und while(1>0){/*stmt1*//*stmt2*/}
oder 12 zusätzliche Zeichen für mehrere Zeilen festgelegt. Ich sage zusätzlich, weil der Code, den ich für immer schleifen möchte (na ja, für immer ... ich kann aus der Schleife ausbrechen oder aus ihr zurückkehren möchte oder nicht), eine bestimmte Länge haben wird, und dann muss ich zusätzliche Zeichen anheften um es tatsächlich zu schleifen.
Zuerst dachte ich, dies sei das Beste, was ich bekommen würde, aber ich dachte, ich würde es den Experten überlassen, um zu sehen, ob sie ein besseres finden können.
main();
?main(null)
.main(a)
wennmain
als deklariert istpublic static void main(String[]a)
.Antworten:
Es funktioniert, weil keine Bedingung als immer wahr ausgewertet wird. Fügen Sie den Code zwischen die geschweiften Klammern ein.
Wenn Sie nur wenige Anweisungen erhalten haben, können Sie diese im Kopf platzieren (der (;;) - Teil. Dass die Schleife noch ausgeführt wird, wird dadurch verursacht, dass die Bedingungsanweisung, wenn sie kein Boolescher Wert ist, als immer wahr gilt. Vielen Dank an @Ypnypn für den Erinnerung
quelle
for(;;foo(),bar(),baz())quux();
for(;;);
Java - 60 Bytes (vollständiger Code)
Ich interpretiere die Frage wahrscheinlich nicht richtig, aber dieser Code führt beim Kompilieren und Ausführen zu einer Endlosschleife, da er technisch für immer ausgeführt werden sollte, aber normalerweise den Stapelspeicher erschöpft.
Auf Coding Ground endet es ziemlich schnell, auf meinem Windows 7-Laptop mit erweiterter Verwaltung des virtuellen Speichers läuft es lange und macht das System immer langsamer.
quelle