Sua tarefa é escrever um programa ou função que produza o primeiro caractere de seu código-fonte, depois o segundo e depois o terceiro ... cada vez que é executado.
Por exemplo, se o seu programa estava foo
no idioma bar
do arquivo baz.bar
, você deve obter uma saída semelhante a esta:
λ bar baz.bar
f
λ bar baz.bar
o
λ bar baz.bar
o
Seu programa pode fazer qualquer coisa quando terminar de imprimir o código-fonte dessa maneira. Você pode modificar o código fonte do arquivo, mas lembre-se de que o código fonte a ser impresso é o código fonte original .
Este é um código de golfe, portanto o programa mais curto em bytes vence.
Respostas:
Gelatina , 12 bytes
Este é um link niládico. Experimente online! (Inclui código para chamar o link doze vezes.)
Como funciona
Como um bônus adicional, uma vez que o registro conterá uma sequência vazia após a chamada dos doze, é mais uma vez falso e o link está pronto para começar de novo. Chamar o link 24 vezes produzirá o código-fonte duas vezes, 36 vezes três vezes, etc.
fonte
¢
), função de identidade (¹
, realmente não é necessária após a primeira chamada), defina o valor de retorno como avanço de linha (⁷
imprime implicitamente o valor de retorno anterior), repita.¹
e⁷
são ambos sobrescritos, mas não estão relacionados. Substituí-os pelos menos confusos¢;¢;¢;¢;¢;¢;¢;¢;¢;¢;¢;¢
(ligar, concatenar, repetir).Javascript - 26 bytes
Define
f()
que retorna o código-fonte caractere por caractere.Retorna indefinido após ficar sem caracteres.
fonte
empilhados , não-concorrentes, 34 bytes
Uma variação na quine padrão. Este é um programa completo. Isso é usado
execCounter
para obter quantas vezes esse programa foi executado especificamente. Erros após a saída de tudo.Experimente aqui!
fonte
Pip , 31 bytes
Uma função anônima. Teste no TIO!
Explicação
Comece com este padrão Pip quine:
Enrole isso em chaves para torná-lo uma função. Agora, em vez de retornar toda a fonte, precisamos indexá-la. O uso de uma variável global para o índice e o incremento a cada vez atenderão ao requisito "próximo caractere toda vez que for chamado".
v
é o melhor candidato porque é pré-inicializado para-1
. Incrementá-lo na primeira vez fornece um índice de0
, da próxima vez1
etc.O Pip possui indexação cíclica, portanto, uma vez que a função imprima seu último caractere, ela começará novamente.
fonte
Python, 90 bytes
Uma extensão no padrão Python Quine (dicas de golfe são bem-vindas):
Esta é uma função de gerador de python , o que significa que você itera sobre ela e cada iteração fornece o próximo caractere no código-fonte. Quando todos os caracteres foram retornados, isso trava
IndexError
.Para testar, basta anexar este script ao final do programa:
Ou experimente online!
fonte
*> <> ,
1321 bytesCria um arquivo chamado
\n
para acompanhar o índice.Pode ser que você possa jogar mais golfe, mas nada imediatamente salta para mim ...
Saída
Explicação
Trapaça Incremental Quine
Explicação
fonte
g
instrução."your code goes here;
para> <> e acessar o n-ésimo membro da pilhaMathematica, 91 bytes
Comentários muito bem-vindos; Eu ainda estou aprendendo as cordas sobre o que são apropriados.
Define uma função chamada repetidamente sem argumentos. Após a 91ª chamada, gera um grande erro e retorna sem avaliação.
Havia dois problemas a serem superados: primeiro, eu queria apenas usar
StringTake[ToString[#0]<>"[]"]
, masToString[]
parece apagar as aspas; então eu tive que substituir"[]"
porFromCharacterCode[{91, 93}]
. Segundo, as variáveis do Mathematica começam não inicializadas, então não posso ligar++q
antes deq
ser definido; é por isso que a inicialIf[!NumberQ[q], q = 0]
é necessária.Coda irrelevante: ao olhar para cima
NumberQ
, aprendi que o Mathematica tem uma função chamadaTrueQ
... que, sim, retornaTrue
se o argumento éTrue
eFalse
se o argumento éFalse
! (O utilitário é que ele retornaFalse
todos os outros argumentos também.)fonte
Microscript II,
4033 bytesUm literal de bloco de código, o equivalente mais próximo da linguagem a uma função:
Após a execução, ele se recoloca
x
para facilitar a chamada novamente.fonte
Bash (e zsh, ksh), 39 bytes
Não imprime nada após a impressão do programa.
Verifique
0
se não existe no diretório atual e execute:fonte