Estoy trabajando en un golf para Java y necesito un bucle infinito. Obviamente, no quiero gastar más bytes de los necesarios, especialmente en un lenguaje tan expresivo.
Suponiendo que tengo un código que quiero ejecutar, obviamente la línea de base se establece en while(1>0)/*stmt*/
10 caracteres adicionales para una sola línea y while(1>0){/*stmt1*//*stmt2*/}
12 caracteres adicionales para varias líneas. Digo adicional porque el código que quiero hacer un bucle para siempre (bueno, para siempre ... puede que quiera o no querer salir o regresar del bucle) tendrá una cierta longitud, y luego debo agregar caracteres adicionales para que sea realmente en bucle.
Al principio pensé que esto era lo mejor que podía obtener, pero pensé que se lo echaría a los expertos para ver si pueden encontrar uno mejor.
main();
?main(null)
.main(a)
simain
se declara comopublic static void main(String[]a)
.Respuestas:
Funciona porque ninguna condición se evalúa como siempre verdadera. Inserte el código entre las llaves.
Si solo tiene unas pocas declaraciones, puede colocarlas dentro de la cabeza (la parte (;;). El hecho de que el ciclo aún se ejecute se debe a que cuando la declaración de condición no es booleana, se cuenta como siempre verdadero. Gracias a @Ypnypn por el recordatorio
fuente
for(;;foo(),bar(),baz())quux();
for(;;);
Java - 60 bytes (código completo)
Probablemente no estoy interpretando la pregunta correctamente, pero este código cuando se compila y se ejecuta da como resultado un bucle infinito, en el sentido de que técnicamente debería ejecutarse para siempre, pero generalmente agotará la memoria de la pila.
En Coding Ground termina bastante rápido, en mi computadora portátil con Windows 7 con administración avanzada de memoria virtual, se ejecuta mucho tiempo, lo que hace que el sistema sea cada vez más lento.
fuente