Esse quine ouroboros de 128 idiomas (um programa que gera um programa em outro idioma, que gera um programa em outro idioma (125 idiomas depois), que gera o programa original) é bastante impressionante. Mas, infelizmente, ele tem um número estático de iterações.
Escreva um programa que emita um programa (não necessariamente em outro idioma, mas pode ser), que emita um programa, que emita um programa, etc., que após n iterações, emita o programa original pela primeira vez (ou seja, nenhum intermediário O programa deve ser o mesmo que o original, porque, caso contrário, um quine que ignora sua entrada funcionaria), em que n é um número inteiro não negativo fornecido como entrada. A entrada não pode ser apenas um número no código-fonte original (por exemplo, colocar x = <the value of n>
no início do seu programa), deve ser uma das seguintes:
- Passado como um argumento de linha de comando
- Ler a partir da entrada padrão
- Passado como argumento para uma função, que retorna / gera o novo programa.
Para estágios intermediários no ouroboros, seu programa pode ser um programa totalmente funcional ou uma função sem argumentos, que, quando chamada, retornará / produzirá o próximo.
Você não pode ler a partir do próprio arquivo de origem ou usar quaisquer componentes internos do tipo quine (não acho que exista algum que faça isso, mas pode haver)
Para ficar claro, se n = 0
o programa deve gerar seu próprio código-fonte.
Se n = 1
, o programa deve emitir um programa diferente, que gera o código fonte original.
E assim por diante...
Menos bytes ganha!
Editar:
Eu deveria ter escrito "Para estágios intermediários no ouroboros, seu programa pode ser um programa totalmente funcional sem entrada ou uma função sem argumentos". Se o seu programa gerar o próximo na cadeia, então aguarde pela entrada, tudo bem, mas seu programa não deve precisar do valor original de n.
getInput()
seja usado sem nenhuma entrada fornecida. Ou podemos dizer que introduza algo aleatório que não seja usado em iterações posteriores, para evitar erros no getInput()
? Aka é a resposta atual do Python válida?
n
, produza um programa que é o "programa inicial" de uma série de n
iterações ouroboros , e que nossa resposta não deve contar como uma das n
iterações. Isso está correto?