7 , 2 bytes
Os caracteres que compõem este programa são:
240223
Ao visualizar o arquivo em um editor, ele provavelmente tentará interpretá-lo como ASCII; nesse caso, ele será assim:
P$
Experimente online!
O programa recebe entrada. Eu assumi aqui que a entrada está no EOF; se você fornecer uma entrada, é possível que ela trava.
Explicação
Iteração Zeroth
240223
240223 Anexe 240223 ao elemento de pilha superior
O programa inteiro aqui é passivo, portanto, ele anexará uma versão ativa de si mesmo ao elemento da pilha superior (que está inicialmente vazio). O programa está em um loop implícito, que avalia o elemento da pilha superior (enquanto o deixa na pilha) a cada iteração. Portanto, a versão ativa será executada. (Praticamente todos os 7 programas começam assim.)
Primeira iteração
240223
2 Copie o elemento da pilha superior
40 Escape do segundo elemento da pilha, trocando-o pelo topo
2 Copie o elemento da pilha superior
23 Crie o elemento da pilha superior
Antes do comando de saída, a pilha contém duas cópias de 240223
(ou seja, passivo). O primeiro obtém saída (com nenhum efeito observável além de selecionar o formato de saída 2, "números"), o abaixo fica e se torna o programa para a próxima iteração.
Segunda iteração
240223
240223 Anexe 240223 ao elemento de pilha superior
O mesmo que a iteração zero, certo? Não é bem assim; a pilha tinha conteúdos diferentes. A pilha está agora 240223
abaixo .240223240223
Terceira iteração
240223 240223
240223 Anexe 240223 ao elemento superior da pilha
2 Copie o elemento superior da pilha
40 Escape do segundo elemento da pilha, troque-o pelo topo
2 Copie o elemento superior da pilha
23 Crie o elemento superior da pilha
Isso gera um elemento de pilha que possui mais três 6s e 0s do que 7s e 1s. O formato de saída 2 interpreta isso como uma solicitação para inserir um número. Lemos EOF, com a conseqüência de que o próximo elemento da pilha é reduzido a uma cadeia de comprimento zero. No entanto, devido a um bug (que parece levemente útil e pode ser promovido a um recurso?), Isso só acontece após o início da execução. A pilha mais uma vez possui dois elementos, 240223
abaixo , mas a versão escapada desse elemento superior está em execução.240223240223240223
72402236240223240223
Quarta iteração
7 240223 6 240223240223
7 240223 6 240223240223 Anexe 240223 240223240223 ao topo da pilha
O topo da pilha era uma string de comprimento zero, então basicamente estamos apenas escapando do programa que acabou lá.
Quinta iteração
240223 240223240223
240223 Anexar 240223 ao elemento de pilha superior
2 Copie o elemento de pilha superior
40 Escape do segundo elemento de pilha, alterne-o para o topo
2 Copie o elemento de pilha superior
23 Crie o elemento de pilha superior
2 Copie o elemento de pilha superior
40 Escape o segundo elemento da pilha, trocando-o pelo topo
2 Copie o elemento da pilha superior
23 Crie o elemento da pilha superior
Isso é muito semelhante à terceira iteração. Existem duas mudanças, no entanto. Primeiro, agora existem 4 mais 0s e 6s do que 1s e 7s; portanto, tentaremos inserir um caractere da entrada padrão em vez de um número. Porém, ainda temos EOF e, no final, acabamos reduzindo o topo da pilha a uma string de comprimento zero. Em seguida, há código em execução após a redução, para que a próxima iteração não inicie imediatamente. Em vez disso, fazemos várias operações nesse elemento de comprimento zero, terminando com três elementos de comprimento zero. Nós produzimos um, os outros dois desaparecem (porque é o fim de uma iteração) e terminamos basicamente onde estávamos no final da terceira iteração.
Sexta iteração
O programa que copiamos do topo da pilha é agora . Tudo funciona como na iteração anterior até chegarmos à primeira instrução de saída (a primeira ). Agora, ele tem mais cinco 0s e 6s do que 1s e 7s; portanto, define um modo no qual a próxima instrução de saída será interpretada como uma solicitação para alterar o formato de saída. Isso também leva a uma notável mudança de comportamento; como não havia solicitação de entrada, não lemos o EOF e, portanto, não acionamos a conseqüência da leitura do EOF (o novo elemento da pilha superior sendo apagado) e, como tal, a versão escapada do elemento da pilha original permanece em vez de ser removido. Isso significa que o próximo240223240223240223240223
23
2402
não é mais um no-op, criando duas cópias com escape do elemento de pilha com escape (ou seja, agora elas têm escape duplo). Nós produzimos um, configurando o formato de saída para 7 ("igual à entrada"); esse formato de saída não possui comandos de E / S e nenhum comando para alterar o formato; portanto, permaneceremos nele pelo resto do programa. Também produzimos 724022362402232402232402232402236
(na mesma codificação que a entrada) para a saída padrão.
De qualquer forma, é bastante claro o que o programa fará a partir deste momento: é uma combinação de anexar vários números de cópias de várias formas escapadas 240223
para o topo da pilha, escapando do topo da pilha e emitindo cópias da parte superior da a pilha. A partir deste momento, o elemento da pilha superior nunca é limpo (porque nunca lemos EOF), portanto, apenas cresce, cresce e cresce. O escape periódico garante que a saída nunca se repita (porque significa que a cada iteração, a primeira saída começa com pelo menos um a mais 7
do que na iteração anterior).
1\n12\n123
inválido?