Votre objectif est de créer un programme qui s'imprime indéfiniment, avec une nouvelle ligne après chacun. Ainsi, si votre programme est à une ligne, il sera répété sur chaque ligne de la sortie.
Exemple
Programme:
A
Sortie:
A
A
A
...
Règles
- Il doit s'agir d'un programme complet, et non d'un extrait ou d'une fonction.
- Le programme devrait boucler indéfiniment sans erreurs de dépassement de pile ou de limite de récursivité.
- La sortie est vers stdout ou l'alternative la plus proche.
- Aucune entrée de programme n'est acceptée.
- Les failles standard sont interdites, telles que l'ouverture du fichier du programme ou l'accès à une ressource externe. Les programmes vides sont interdits comme échappatoire standard.
- Si votre code de programme se termine par une nouvelle ligne de fin, cela ne compte pas comme la nouvelle ligne nécessaire entre les quines et vous devez en imprimer une autre.
- codegolf - Le code le plus court gagne!
while(1)println(your_code)
;Réponses:
Fission, 7 octets
Une modification assez simple du quine de Fission le plus court que j'ai trouvé jusqu'à présent : j'utilise simplement le non destructif
!
au lieu deO
et j'ai ajouté unN
pour la nouvelle ligne.Donc, dans l'ensemble, voici comment cela fonctionne: le flux de contrôle commence à la
R
avec un atome de droite."
bascule le mode chaîne, ce qui signifie tout jusqu'à ce que le suivant"
soit imprimé: dans ce cas'!+!NR
. Cela laisse le"
et la nouvelle ligne à imprimer.'!
définit la masse de l'atome à 33, l'+
incrémente à 34 (le code de caractère de"
) et!
imprime la citation.N
imprime une nouvelle ligne, etR
est maintenant un no-op dans ce cas, donc la boucle recommence.La solution 7 octets suivante fonctionne également:
la source
> <> , 16 octets
La quine traditionnelle <<> utilise trop de
o
s, nous utilisons donc une boucle pour l'impression. Avant chaque saut, nous poussons 5 et 0 (les coordonnées de l'endroit où sauter), après quoi nous sautons avec.
s'il y a encore quelque chose à imprimer, ou nous sautons les deux premières valeurs avec~~
.(Revenu à la version 16 depuis que j'ai oublié la règle de débordement de pile.)
la source
"ar00go50l2)?.[
, non?d3*
puisqueg
lit votre propre code sourceCJam, 13 octets
L'interpréteur en ligne n'imprime rien avant la fin du programme, vous devrez donc le tester dans l'interpréteur Java.
Explication
Enfin une quine CJam généralisée qui ne se termine pas
_~
.Cela pousse simplement un bloc.
_g
duplique le bloc et l'exécute de façon répétée tandis que le haut de la pile est véridique (rejetant la condition).Maintenant à l'intérieur du bloc, l'autre copie du bloc est toujours sur la pile. Nous le dupliquons et l'imprimons avec
_o
puis nous imprimons_g
suivi d'une nouvelle ligne (la nouvelle ligne supplémentaire requise entre les quines) avec"_g\n"o
. Enfin, nous poussons un1
sur la pile pour que la boucle se répète, car malheureusement, les blocs ne sont pas vrais (ou faux) dans CJam.la source
Python 2, 39
Pas une tâche très intéressante en Python car il est trivial d'ajouter la boucle while à un quine normal.
la source
Perl 5.10+,
4037 octetsou (également 37 octets)
Appelez avec le drapeau de ligne de commande
-M5.010
ou-E
, par exempleMerci à Ilmari Karonen avoir rasé 3 octets de ma solution d'origine, qui était:
Ceci, ainsi que les solutions plus courtes de 37 octets ci-dessus, sont toutes de simples variations du quine suivant, que j'ai vu pour la première fois dans l'un des autres articles d' Ilmari :
Comme tout ce que j'ai ajouté dans ma solution d'origine était une
while
boucle, il mérite vraiment la plupart du crédit. :-)la source
$_=q{say"\$_=q{$_};eval"while 1};eval
ou$_=q{{say"\$_=q{$_};eval";redo}};eval
serait de quelques octets plus court. ($_=q{say"\$_=q{$_};eval";eval};eval
serait encore plus court, mais je pense qu'il finira par manquer de pile.)print
au lieu desay
).Brainf auto-modifiable *** (SMBF) , 14 octets
La nouvelle ligne de fin
\n
doit être une nouvelle ligne littérale, Unix (code ASCII 10).Explication:
Le code déplace le pointeur à l'extrême gauche de son code source, puis imprime tout, y compris la nouvelle ligne (deux fois b / c de la règle). La boucle continue.
la source
\r
?\n
est une nouvelle ligne, et est le code ASCII 10, donc un vidage hexadécimal du code source aurait la valeur0A
de cet octet. code.cside.com/3rdpage/us/newLine.html\n
compte généralement comme 2 caractères et 2 octets dans votre code. Je l'ai tapé de cette façon pour plus de lisibilité, car le formatage ne fonctionne pas bien pour afficher une ligne vierge à la fin de mon code source. Et donc j'ai dû préciser que c'était UN octet, pas deux.\n
est toujours un seul caractère, appelé un saut de ligne . Une nouvelle ligne , cependant, est une séquence d'octets dépendante de la plate-forme./
un "Solidus", et je ne connais personne qui le fasse. "Newline" commence par unn
, et c'est le caractère d'échappement, c'est ainsi que je l'appelle. C'est plus proche du "saut de ligne" que du "retour chariot".PowerShell, 143 octets
Basé sur le quine Rosetta Code PowerShell , je suis assez confiant que ce n'est pas le plus court possible. Le formatage de remplacement de chaîne dans PowerShell est compliqué pour cela, car les mêmes délimiteurs pour l'emplacement des remplacements
{}
délimitent également les blocs de codewhile{}
, nous devons donc utiliser[char]
conversion, qui gonfle le code un tas.la source
Sous-charge, 25 octets
La première fois, j'ai essayé quelque chose comme ça et je ne suis pas sûr de suivre toutes les règles car il s'agit de quelques lignes. La nouvelle ligne était un peu pénible.
la source
Befunge ,
3020 octetsUne variante d'une quine befunge populaire qui imprime une nouvelle ligne et affiche -1 sur la pile si elle termine la ligne.
Malheureusement, Befunge devient verbeux lorsqu'il fait les choses sur une seule ligne. J'ai essayé de supprimer tous les launchpads (
#
) que je pouvais, mais certains ont dû être laissés pour ignorer certaines commandes (comme,
).Changements:
30-20 -> changé le quine de base en un personnalisé que j'ai fait qui utilise une entrée de chaîne. De cette façon, la ramification est beaucoup plus facile.
Vieux:
Je ne pense pas que ce soit optimal, mais c'est acceptable pour l'instant.
la source
98+2/
: <, + 55, + 2g1_ #!, #: <"-1g0:+5<>:#,_1"
K, 30 octets
la source
R, 34 octets
à appeler à partir de la ligne de commande comme suit:
la source
> <>,
3129 octetsUne simple modification du quine traditionnel > <> .
Pour l'exécuter, collez-le ici , cliquez sur «Soumettre», puis sur «Démarrer» (l'exécution sans animation ne fonctionne pas). N'hésitez pas à augmenter la vitesse d'exécution.
la source
"ar00gc0.0+feooooooooooooooo|
est de deux octets plus court.Python 2, 48 octets
la source
GolfScript, 16 octets
Cela a fini par ressembler beaucoup à l'entrée CJam de Martin Büttner . Une caractéristique intéressante est que, en fin de compte, le moyen le plus court pour ajouter
".do"
au bloc lorsqu'il est imprimé est de l'attribuer au terminateur de lignen
. (Bien sûr, nous devons également inclure une nouvelle ligne dans la chaîne, pour remplacer cellen
qui contient normalement.) La même chaîne (fidèle dans GolfScript) est également laissée sur la pile pour que lado
boucle se détache, garantissant que la boucle fonctionne pour toujours.la source
BASH, 76 octets
Je n'ai tout simplement pas pu résister, surtout avec PowerShell ici :)
L'espace est important pour une copie EXACTE.
la source
Javascript (ES6), 64
Alternativement (également 64)
la source
arguments.callee
does not exist and throws an error.!
instead of enclosing parentheses and putting the function execution after the for loop to avoid the need for the for loop semicolon body which would save (I think) 4 bytesMicroscript, 22 bytes
Based on the quine from the Esolangs article:
"fCqxah"fCqxah
. Exploits the fact that the language autoappends closing braces as needed, without which this would be two bytes longer.la source
Batch, 10 (+ 4 for filename length)
Not sure if this qualifies for two reasons:
The code (for a program named q.bat):
la source
echo on&&%0
although I'm afraid to try it.echo on&&%0
does not work.%0
is displayed as expanded in the output, and windows (7, 32 bit, running in a VM) terminates the entire thing pretty quickly..bat
partCeylon,
210208 bytesOf course this won't win anything...
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);}}
I modified my Quine from two days ago by adding the
while(true){...}
loop, so I come from the 185 bytes of the plain Quine to 210 (I don't need the trailing new line character anymore). But then I found that awhile(1<2){...}
loop is even two bytes shorter: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);}}
(Ceylon has no
for(;;)
loop like Java, and the braces are also needed for this loop.)la source
PowerShell,
132107 BytesBased off of the Rosetta Quine (Same as @AdmBorkBork) although doesn't use formatting for string replacement... maybe switching to a for loop and using formatting would be best?
I'm sure if AdmBorkBork came back they would beat this by a lot :P
EDIT Figured out the for loop and replacements, all thanks to my predecessor :)
Old attempt:
la source
Ruby,
4139 bytesA modification of one of the Ruby quines found here.
la source
Java 10, 194 bytes
Explanation:
Try it online (times out after 60 sec).
quine-part:
s
contains the unformatted source code.%s
is used to input this String into itself with thes.format(...)
.%c
,%1$c
and the34
are used to format the double-quotes.s.format(s,34,s)
puts it all togetherChallenge part:
for(;;)
is used to loop indefinitely.System.out.println(...)
is used to print with trailing new-linela source
Funky, 29 bytes
Try it online!
la source
RProgN 2, 7 bytes
Try it online!
la source
Jelly, 14 bytes
Try it online!
la source
Pyth, 11 bytes
Try it here!
la source
Brachylog, 16 bytes
You can't quite try it online, but I have verified that it works on my installation.
Brachylog, 18 bytes
Try it online!
Adapted from the alternate version of this quine, with a backtracking hack I had initially devised for bogosort of all things. Spends two bytes on
~n
becauseẉ
(the usual means for printing with a trailing newline) hits some odd issues with character encoding on TIO, and an actual newline inserted into the string literal gets printed through~k
as\n
.Since
w₁
takes input as a list[string to be formatted, formatting arguments]
, wrapping a string in a list withg
then concatenating it to itself withj
allows it to be formatted with itself. And since no input is given to the program, the input variable which is implicitly present at the beginning of the program can take on any value, so it can be constrained to one of the infinitely many lists which contain"∋~kgjw₁⊥~n"
as an element, creating a single choice point to be backtracked to when after printing its source the program hits⊥
.la source
Python 3.6,
4843 bytes.-5 bytes thanks to @Jo King
la source
%r
to save on escaping those'
s. 43 bytesGol><>, 10 bytes
Try it online!
This can probably be golfed down more
la source