Su objetivo es crear un programa que se imprima indefinidamente, con una nueva línea después de cada uno. Por lo tanto, si su programa es de una sola línea, se repetirá en cada línea de la salida.
Ejemplo
Programa:
A
Salida:
A
A
A
...
Reglas
- Debe ser un programa completo, no un fragmento o función.
- El programa debería repetirse para siempre sin desbordamiento de pila o errores de límite de recursión.
- La salida es stdout o la alternativa más cercana.
- No se acepta entrada de programa.
- Las lagunas estándar no están permitidas, como abrir el archivo del programa o acceder a un recurso externo. Los programas vacíos no están permitidos como un vacío legal estándar.
- Si el código de su programa termina con una nueva línea final, esto no cuenta como la nueva línea necesaria entre las líneas, y debe imprimir otra.
- codegolf - ¡El código más corto gana!
while(1)println(your_code)
;Respuestas:
Fisión, 7 bytes
Una modificación bastante simple de la quine de fisión más corta que he encontrado hasta ahora : simplemente estoy usando la no destructiva en
!
lugar deO
y agregué unaN
para nueva línea.En resumen, así es como funciona: el flujo de control comienza en el
R
con un átomo a la derecha."
alterna el modo de cadena, lo que significa todo hasta que"
se imprima el siguiente : en este caso'!+!NR
. Eso deja la"
y la nueva línea para imprimir.'!
establece la masa del átomo en 33, la+
incrementa a 34 (el código de caracteres de"
) e!
imprime la cita.N
imprime una nueva línea yR
ahora no funciona en este caso, por lo que el ciclo comienza de nuevo.La siguiente solución de 7 bytes también funciona:
fuente
> <> , 16 bytes
La tradicional> <> quine usa demasiados
o
s, así que usamos un bucle para imprimir. Antes de cada salto, presionamos 5 y 0 (las coordenadas de hacia dónde saltar), después de lo cual saltamos.
si todavía hay algo para imprimir o aparecen los dos valores superiores~~
.(Volví a la versión 16 ya que olvidé la regla de desbordamiento de pila).
fuente
"ar00go50l2)?.[
, ¿verdad?d3*
ya queg
lee su propio código fuenteCJam, 13 bytes
El intérprete en línea no imprime nada antes de que finalice el programa, por lo que tendrá que probar esto en el intérprete de Java.
Explicación
Finalmente, una quine CJam generalizada que no termina en
_~
.Esto simplemente empuja un bloque.
_g
duplica el bloque y lo ejecuta repetidamente mientras la parte superior de la pila es verdadera (descartando la condición).Ahora dentro del bloque, la otra copia del bloque todavía está en la pila. Lo duplicamos e imprimimos con
_o
y luego imprimimos_g
seguido de una nueva línea (la nueva línea adicional requerida entre las líneas) con"_g\n"o
. Finalmente, empujamos a1
a la pila para que se repita el ciclo, porque desafortunadamente, los bloques no son verdaderos (o falsos) en CJam.fuente
Pitón 2, 39
No es una tarea muy interesante en Python, ya que es trivial agregar el ciclo while a una quine normal.
fuente
Perl 5.10+,
4037 byteso (también 37 bytes)
Invocar con el indicador de línea de comando
-M5.010
o-E
, por ejemploGracias a Ilmari Karonen por eliminar 3 bytes de mi solución original, que fue:
Esto, así como las soluciones más cortas de 37 bytes anteriores, son variaciones simples de la siguiente frase, que vi por primera vez en una de las otras publicaciones de Ilmari :
Como todo lo que agregué en mi solución original fue un
while
bucle, realmente merece la mayor parte del crédito. :-)fuente
$_=q{say"\$_=q{$_};eval"while 1};eval
o$_=q{{say"\$_=q{$_};eval";redo}};eval
sería unos pocos bytes más cortos. ($_=q{say"\$_=q{$_};eval";eval};eval
sería aún más corto aún, pero sospecho que eventualmente se quedará sin pila).print
lugar desay
).Brainf *** auto modificable (SMBF) , 14 bytes
La nueva línea final
\n
debe ser una nueva línea literal, Unix, (código ASCII 10).Explicación:
El código mueve el puntero al extremo izquierdo de su código fuente, luego lo imprime todo, incluida la nueva línea (dos veces b / c de la regla). El ciclo continúa.
fuente
\r
?\n
es una nueva línea y es el código ASCII 10, por lo que un volcado hexadecimal del código fuente tendría el valor0A
para ese byte. code.cside.com/3rdpage/us/newLine.html\n
generalmente cuenta como 2 caracteres y 2 bytes en su código. Lo escribí de esta manera para facilitar la lectura, ya que el formato no funciona bien para mostrar una línea en blanco al final de mi código fuente. Y entonces tuve que especificar que era UN byte, no dos.\n
siempre es un solo carácter, llamado salto de línea . Un salto de línea , sin embargo, es una secuencia dependiente de la plataforma de bytes./
un "Solidus", y no conozco a nadie que lo haga. "Newline" comienza con unn
, y ese es el carácter de escape, así que así lo llamo. Está más cerca del "avance de línea" que del "retorno de carro".PowerShell, 143 bytes
Basado del Código Rosetta PowerShell Quine , estoy bastante seguro de que este no es el más corto posible. El formato de reemplazo de cadenas en PowerShell es difícil para esto, porque los mismos delimitadores para dónde colocar los reemplazos
{}
también delimitan los bloques de códigowhile{}
, por lo que tenemos que usar la[char]
conversión, que hincha el código un montón.fuente
Baja carga, 25 bytes
La primera vez que probé algo como esto y no estoy seguro si sigue todas las reglas, ya que se trata de un par de líneas. La nueva línea fue un poco dolorosa.
fuente
Befunge ,
3020 bytesUna variación de una popular quine befunge que imprime una nueva línea y aparece -1 en la pila si termina la línea.
Desafortunadamente, Befunge se vuelve detallado cuando hace cosas en una línea. Traté de eliminar todos los launchpads (
#
) que pude, pero tuve que dejar algunos para omitir ciertos comandos (como,
).Cambios:
30-20 -> cambié la base quine a una personalizada que hice que usa la entrada de cadena. De esta manera, la ramificación es mucho más fácil.
Antiguo:
No creo que esto sea óptimo, pero es aceptable por ahora.
fuente
98+2/
: <, + 55, + 2g1_ #!, #: <"-1g0:+5<>:#,_1"
K, 30 bytes
fuente
R, 34 bytes
invocar desde la línea de comando de la siguiente manera:
fuente
> <>,
3129 bytesUna simple modificación de la tradicional > <> quine .
Para ejecutarlo, péguelo aquí , haga clic en 'Enviar', luego 'Iniciar' (ejecutar sin animación no funciona). Siéntase libre de aumentar la velocidad de ejecución.
fuente
"ar00gc0.0+feooooooooooooooo|
es dos bytes más corto.Python 2, 48 bytes
fuente
GolfScript, 16 bytes
Esto terminó pareciéndose mucho a la entrada de Martin Büttner en CJam . Una característica interesante es que, como resulta, la forma más corta de agregar
".do"
al bloque cuando se imprime es asignarlo al terminador de línean
. (Por supuesto, también debemos incluir una nueva línea real en la cadena, para reemplazar la quen
normalmente contiene). La misma cadena (siendo sincera en GolfScript) también se deja en la pila para que eldo
bucle salte, asegurando que el bucle corre por siempre.fuente
BASH, 76 bytes
Simplemente no pude resistirme, especialmente con PowerShell aquí :)
El espacio en blanco es importante para una copia EXACTA.
fuente
Javascript (ES6), 64
Alternativamente (también 64)
fuente
arguments.callee
no existe y arroja un error.!
lugar de encerrar los paréntesis y poner la ejecución de la función después del bucle for para evitar la necesidad del cuerpo de punto y coma del bucle que ahorraría (creo) 4 bytesMicroscript , 22 bytes
Sobre la base de la quine del artículo de Esolangs:
"fCqxah"fCqxah
. Explota el hecho de que el lenguaje aplica automáticamente llaves de cierre según sea necesario, sin lo cual esto sería dos bytes más largos.fuente
Lote, 10 (+ 4 para la longitud del nombre del archivo)
No estoy seguro si esto califica por dos razones:
El código (para un programa llamado q.bat):
fuente
echo on&&%0
aunque me da miedo intentarlo.echo on&&%0
no funciona.%0
se muestra como expandido en la salida, y Windows (7, 32 bit, ejecutándose en una VM) termina todo el proceso bastante rápido..bat
parteCeilán ,
210208 bytesPor supuesto, esto no ganará nada ...
Original:
shared void u(){value q="\"\"\"";value t="""shared void u(){value q="\"\"\"";value t=""";value b="""while(true){print(t+q+t+q+";value b="+q+b+q+";"+b);}}""";while(true){print(t+q+t+q+";value b="+q+b+q+";"+b);}}
Modifiqué mi Quine de hace dos días agregando el
while(true){...}
bucle, por lo que vengo de los 185 bytes del Quine simple a 210 (ya no necesito el nuevo carácter de línea final). Pero luego descubrí que unwhile(1<2){...}
bucle es incluso dos bytes más corto:shared void u(){value q="\"\"\"";value t="""shared void u(){value q="\"\"\"";value t=""";value b="""while(1<2){print(t+q+t+q+";value b="+q+b+q+";"+b);}}""";while(1<2){print(t+q+t+q+";value b="+q+b+q+";"+b);}}
(Ceilán no tiene un
for(;;)
bucle como Java, y las llaves también son necesarias para este bucle).fuente
PowerShell,
132107bytesBasado en Rosetta Quine (igual que @AdmBorkBork) aunque no utiliza el formato para el reemplazo de la cadena ... ¿tal vez cambiar a un bucle for y usar el formato sería lo mejor?
Estoy seguro de que si AdmBorkBork regresara, lo superarían mucho: P
EDITAR Descubrí el bucle for y los reemplazos, todo gracias a mi predecesor :)
Viejo intento:
fuente
Ruby,
4139 bytesUna modificación de una de las quines de Ruby encontradas aquí .
fuente
Java 10, 194 bytes
Explicación:
Pruébelo en línea (agota el tiempo de espera después de 60 segundos).
quine -parte:
s
contiene el código fuente sin formato.%s
se utiliza para ingresar esta cadena en sí misma con els.format(...)
.%c
,%1$c
y34
se usan para formatear las comillas dobles.s.format(s,34,s)
lo pone todo juntoParte del desafío:
for(;;)
se usa para recorrer indefinidamente.System.out.println(...)
se utiliza para imprimir con una nueva línea al finalfuente
Funky , 29 bytes
Pruébalo en línea!
fuente
RProgN 2 , 7 bytes
Pruébalo en línea!
fuente
Jalea , 14 bytes
Pruébalo en línea!
fuente
Pyth, 11 bytes
Pruébalo aquí!
fuente
Brachylog , 16 bytes
No puedes probarlo en línea , pero he verificado que funciona en mi instalación.
Brachylog , 18 bytes
Pruébalo en línea!
Adaptado de la versión alternativa de este quine , con un truco de retroceso que había ideado inicialmente para bogosort de todas las cosas. Gasta dos bytes
~n
porqueẉ
(el medio habitual para imprimir con una nueva línea final) tiene algunos problemas extraños con la codificación de caracteres en TIO, y una nueva línea real insertada en el literal de cadena se imprime~k
como\n
.Dado que
w₁
toma la entrada como una lista[string to be formatted, formatting arguments]
, envolver una cadena en una lista yg
luego concatenarla con ella mismaj
permite formatearla consigo misma. Y dado que no se proporciona ninguna entrada al programa, la variable de entrada que está implícitamente presente al comienzo del programa puede tomar cualquier valor, por lo que puede restringirse a una de las infinitas listas que contienen"∋~kgjw₁⊥~n"
como elemento, creando un solo punto de elección al que se debe realizar un seguimiento cuando, después de imprimir su origen, el programa llega⊥
.fuente
Python 3.6,
4843 bytes.-5 bytes gracias a @Jo King
fuente
%r
para ahorrar al escapar de esos'
s. 43 bytesGol> <> , 10 bytes
Pruébalo en línea!
Esto probablemente se puede jugar más golf
fuente