Seu objetivo é criar um programa que se imprima indefinidamente, com uma nova linha após cada um. Portanto, se o seu programa for de uma linha, ele será repetido em todas as linhas da saída.
Exemplo
Programa:
A
Saída:
A
A
A
...
Regras
- Ele deve ser um programa completo, não um trecho ou função.
- O programa deve executar um loop para sempre, sem erros de limite de recursão ou excesso de pilha.
- A saída é stdout ou a alternativa mais próxima.
- Nenhuma entrada de programa é aceita.
- As brechas padrão não são permitidas, como abrir o arquivo do programa ou acessar um recurso externo. Programas vazios não são permitidos como brechas padrão.
- Se o código do seu programa terminar com uma nova linha à direita, isso não conta como a nova linha necessária entre as linhas e você deve imprimir outra.
- codegolf - O código mais curto vence!
while(1)println(your_code)
;Respostas:
Fissão, 7 bytes
Uma modificação bastante simples do quine de Fissão mais curto que encontrei até agora : estou simplesmente usando o não destrutivo em
!
vez deO
e adicionei umN
para nova linha.Então, em suma, eis como funciona: o fluxo de controle começa no
R
átomo certo."
alterna o modo de sequência, o que significa tudo até a próxima"
impressão: neste caso'!+!NR
. Isso deixa a"
nova linha a ser impressa.'!
define a massa do átomo em 33, a+
incrementa em 34 (o código de caractere de"
) e!
imprime a citação.N
imprime uma nova linha eR
agora não funciona nesse caso, para que o loop recomeça.A seguinte solução de 7 bytes também funciona:
fonte
> <> , 16 bytes
A quina tradicional> <> usa muitos
o
s, então usamos um loop para impressão. Antes de cada salto, pressionamos 5 e 0 (as coordenadas de onde pular), após o qual pulamos.
se ainda houver algo para imprimir ou exibimos os dois principais valores~~
.(Revertida para a versão 16 desde que me esqueci da regra de estouro de pilha.)
fonte
"ar00go50l2)?.[
, certo?d3*
uma vezg
lê o seu próprio código fonteCJam, 13 bytes
O intérprete online não imprime nada antes que o programa termine, portanto, você precisará testá-lo no interpretador Java.
Explicação
Finalmente, uma solução CJam generalizada que não termina em
_~
.Isso simplesmente empurra um bloco.
_g
duplica o bloco e o executa repetidamente enquanto a parte superior da pilha é verdadeira (descartando a condição).Agora dentro do bloco, a outra cópia do bloco ainda está na pilha. Nós o duplicamos e imprimimos com
_o
e, em seguida, imprimimos_g
seguidos por uma nova linha (a nova linha extra necessária entre linhas) com"_g\n"o
. Finalmente, pressionamos um1
na pilha para que o loop se repita, porque, infelizmente, os blocos não são verdadeiros (ou falsos) no CJam.fonte
Python 2, 39
Não é uma tarefa muito interessante em Python, pois é trivial adicionar o loop while a um quine normal.
fonte
Perl 5.10+,
4037 bytesou (também 37 bytes)
Chame com o sinalizador de linha de comando
-M5.010
ou-E
, por exemploAgradeço a Ilmari Karonen por remover 3 bytes da minha solução original, que foi:
Isso, bem como as soluções mais curtas de 37 bytes acima, são todas variações simples do seguinte quine, que eu vi pela primeira vez em uma das outras postagens de Ilmari :
Como tudo o que adicionei na minha solução original foi um
while
loop, ele realmente merece a maior parte do crédito. :-)fonte
$_=q{say"\$_=q{$_};eval"while 1};eval
ou$_=q{{say"\$_=q{$_};eval";redo}};eval
seria alguns bytes mais curto. ($_=q{say"\$_=q{$_};eval";eval};eval
Seria ainda mais curto ainda, mas eu suspeito que irá , eventualmente, ficar sem pilha.)print
vez desay
).Brainf com modificação automática *** (SMBF) , 14 bytes
A nova linha
\n
à direita precisa ser uma linha literal, Unix, (código ASCII 10).Explicação:
O código move o ponteiro para a extrema esquerda do seu código-fonte e depois imprime tudo, incluindo a nova linha (duas vezes b / c da regra). O loop continua.
fonte
\r
?\n
é uma nova linha e é o código ASCII 10, portanto, um dump hexadecimal do código-fonte teria o valor0A
desse byte. code.cside.com/3rdpage/us/newLine.html\n
geralmente conta como 2 caracteres e 2 bytes no seu código. Digitei dessa maneira para facilitar a leitura, pois a formatação não funciona bem para mostrar uma linha em branco no final do meu código-fonte. E então eu tive que especificar que era um byte, não dois.\n
é sempre um único caractere, chamado avanço de linha . Uma nova linha , no entanto, é uma sequência de bytes dependente da plataforma./
"Solidus" e não conheço ninguém que o faça. "Newline" começa com umn
, e esse é o caractere de escape, e é assim que eu o chamo. Está mais perto de "avanço de linha" do que de "retorno de carro".PowerShell, 143 bytes
Baseado no quine do Rosetta Code PowerShell , estou bastante confiante de que esse não é o mais curto possível. A formatação de substituição de cadeia de caracteres no PowerShell é difícil para isso, porque os mesmos delimitadores para onde colocar as substituições
{}
também delimitam blocos de códigowhile{}
, por isso temos que usar a[char]
conversão, que incha o código bastante.fonte
Carga insuficiente, 25 bytes
Primeira vez que tentei algo assim e não tenho certeza se segue todas as regras, pois são algumas linhas. A nova linha foi um pouco dolorosa.
fonte
Befunge ,
3020 bytesUma variação de um quine befunge popular que imprime uma nova linha e aparece -1 na pilha se terminar a linha.
Infelizmente, o Befunge fica detalhado ao fazer as coisas em uma linha. Tentei remover todas as barras de ativação (
#
) que pude, mas algumas tiveram que ser deixadas para pular determinados comandos (como,
).Alterar:
30-20 -> alterou o quine base para um personalizado que fiz que usa entrada de string. Dessa forma, a ramificação é muito mais fácil.
Velho:
Não acho que isso seja ideal, mas é aceitável por enquanto.
fonte
98+2/
: <, + 55, + 2g1_ #!, #: <"-1g0:+5<>:#,_1"
K, 30 bytes
fonte
R, 34 bytes
para chamar a partir da linha de comando da seguinte maneira:
fonte
> <>,
3129 bytesUma simples modificação da tradicional > <> quine .
Para executar, cole-o aqui , clique em 'Enviar' e depois em 'Iniciar' (a execução sem animação não funciona). Sinta-se livre para aumentar a velocidade de execução.
fonte
"ar00gc0.0+feooooooooooooooo|
é dois bytes mais curto.Python 2, 48 bytes
fonte
GolfScript, 16 bytes
Isso acabou parecendo muito com a entrada de Martin Büttner no CJam . Uma característica interessante é que, como se vê, a maneira mais curta de anexar
".do"
ao bloco quando impresso é atribuí-lo ao terminador de linhan
. (Obviamente, também precisamos incluir uma nova linha real na string, para substituir a quen
normalmente contém.) A mesma string (sendo verdadeira no GolfScript) também é deixada na pilha para que odo
loop saia, garantindo que o loop corre para sempre.fonte
BASH, 76 bytes
Não pude resistir, especialmente com o PowerShell aqui :)
O espaço em branco é importante para uma cópia EXATA.
fonte
Javascript (ES6), 64
Alternativamente (também 64)
fonte
arguments.callee
não existe e gera um erro.!
vez de colocar parênteses e colocar a execução da função após o loop for para evitar a necessidade do corpo de ponto e vírgula for loop que salvaria (eu acho) 4 bytesMicroscript , 22 bytes
Com base na Quine do artigo Esolangs:
"fCqxah"fCqxah
. Explora o fato de que o idioma anexa automaticamente chaves de fechamento conforme necessário, sem o qual seriam dois bytes mais longos.fonte
Lote, 10 (+ 4 para o tamanho do nome do arquivo)
Não tenho certeza se isso está qualificado por dois motivos:
O código (para um programa chamado q.bat):
fonte
echo on&&%0
embora eu tenha medo de tentar.echo on&&%0
não funciona.%0
é exibido como expandido na saída e o Windows (7, 32 bits, executando em uma VM) finaliza tudo rapidamente..bat
parteCeilão ,
210208 bytesClaro que isso não vai ganhar 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);}}
Eu modifiquei meu Quine de dois dias atrás , adicionando o
while(true){...}
loop, então venho dos 185 bytes do Quine simples para 210 (não preciso mais do caractere de nova linha à direita). Mas então eu descobri que umwhile(1<2){...}
loop é até dois bytes mais curto: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);}}
(O Ceilão não possui
for(;;)
loop como Java, e as chaves também são necessárias para esse loop.)fonte
PowerShell,
132107 bytesBaseado no Rosetta Quine (o mesmo que @AdmBorkBork), embora não use a formatação para substituir a string ... talvez seja melhor alternar para um loop for e usar a formatação?
Tenho certeza que se o AdmBorkBork voltar, eles vencerão muito: P
EDITAR Descobri o loop for e substituições, tudo graças ao meu antecessor :)
Antiga tentativa:
fonte
Ruby,
4139 bytesUma modificação de um dos códigos de Ruby encontrados aqui .
fonte
Java 10, 194 bytes
Explicação:
Experimente online (o tempo limite termina após 60 s).
quine -part:
s
contém o código fonte não formatado.%s
é usado para inserir esta String em si mesma com os.format(...)
.%c
,%1$c
E o34
são usados para formatar as aspas.s.format(s,34,s)
coloca tudo juntoParte do desafio:
for(;;)
é usado para fazer um loop indefinidamente.System.out.println(...)
é usado para imprimir com nova linha à direitafonte
Funky , 29 bytes
Experimente online!
fonte
RProgN 2 , 7 bytes
Experimente online!
fonte
Gelatina , 14 bytes
Experimente online!
fonte
Pitão, 11 bytes
Experimente aqui!
fonte
Braquilog , 16 bytes
Você não pode experimentá-lo online , mas verifiquei que ele funciona na minha instalação.
Braquilog , 18 bytes
Experimente online!
Adaptado da versão alternativa deste quine , com um hack de backtracking que eu havia inventado inicialmente para um bogoort de todas as coisas. Gasta dois bytes
~n
porqueẉ
(o meio usual de impressão com uma nova linha à direita) atinge alguns problemas estranhos com a codificação de caracteres no TIO, e uma nova linha real inserida na string literal é impressa~k
como\n
.Como
w₁
recebe a entrada como uma lista[string to be formatted, formatting arguments]
, agrupar uma sequência em uma listag
e concatená-la consigo mesmaj
permite que ela seja formatada consigo mesma. E como nenhuma entrada é fornecida ao programa, a variável de entrada que está implicitamente presente no início do programa pode assumir qualquer valor, portanto, pode ser restringida a uma das infinitas listas que contêm"∋~kgjw₁⊥~n"
como elemento, criando uma única ponto de escolha a ser retornado para quando, após imprimir sua fonte, o programa for acessado⊥
.fonte
Python 3.6,
4843 bytes.-5 bytes graças a @Jo King
fonte
%r
para economizar em escapar desses'
. 43 bytesGol> <> , 10 bytes
Experimente online!
Provavelmente isso pode ser jogado mais
fonte