Palavras - chave : Interquine
Programa A emite o código do programa B quando executado, e B emite a fonte de C e C emite a fonte de A.
Desta vez, você não pode trocar dois caracteres e trocar novamente :)
Requisitos:
- Apenas um idioma em todos os programas
- Aplicam-se restrições de brechas padrão
- Todos os programas são diferentes. Um programa que sai em si não se qualifica. Dois que saem um ao outro também não se qualificam.
- Todos os programas não estão vazios ou têm pelo menos 1 byte de comprimento.
- Não há nada para ler porque o stdin está conectado
/dev/null
(você pode abusar dessa regra, se puder ). A saída vai para stdout. - Não use funções que geram resultados aleatórios.
Adicional:
- Dê explicações, se possível
A pontuação é a duração da mais curta (você pode gerar um programa longo a partir de um curto?). Escreva a duração de todos os programas e destaque o menor número. A nova linha à direita não conta. Menor pontuação ganha .
Respostas:
Python 3 , 50 bytes
Experimente online!
A última expressão vai de
1*2%7
para2*2%7
e4*2%7
depois para1*2%7
.fonte
1-2/_
forma um ciclo com 3(1,-1,3)
, o que salva um byte por não precisar ser escapado%
.n
,s='s=%r;print(s%%(s,-~%i%%3))';print(s%(s,-~1%3))
substituindo3
comn
RProgN 2 ,
128 bytesExplicado
Devido à natureza conveniente de como o RProgN gera como padrão, isso deixa o número, que faz um loop entre 1, 2 e 4, na primeira linha, e a versão restrita da função na segunda. Inspirado por @LeakyNun 's Python Resposta
Experimente online!
fonte
CJam , 17 bytes
Experimente online!
Provavelmente não é o ideal, mas essa é uma modificação da minha abordagem do desafio anterior .
A idéia básica é a mesma, mas realizamos dois swaps, um dos quais é sempre um no-op. Os índices afetados são
2
,3
e6
:fonte
CJam , 14 bytes
Experimente online!
Os outros programas têm 26 e 38 bytes, respectivamente.
Explicação
Mais uma abordagem!
fonte
Gelatina , 11 bytes
Isso gerou o mesmo programa com 1 substituído por 2 , que substituiu 2 por 4 , o que gera o programa original.
Experimente online!
fonte
Python 3, 127, 127 e 127 bytes
impressões
impressões
Isso se baseia na minha resposta à pergunta Interquine, que é baseada em uma solução Python normal. E eu sei exatamente o que fazer quando temos uma pergunta quad-interquina;)
fonte
CJam , 14 bytes
Experimente online!
Explicação
fonte
Javascript (ES6),
6355 bytesSolução alternativa usando
Function.prototype.toString
(barato, 30 bytes)fonte
Cálculo lambda , 38 caracteres, 44 bytes
Uma solução simples baseada na mãe de todos os quines: o combinador y :
Usando reduções beta, vemos que isso é realmente um tri-interquino:
fonte
Java 8, 118 bytes
Só
int i=0;
é diferença entre as funções / saídas (é qualquer um0
,1
ou2
).Explicação:
Experimente online.
Explicação adicional:
quine -part:
String s
contém o código fonte não formatado%s
é usado para colocar essa String em si mesma coms.format(...)
%c
,%2$c
E34
são usados para formatar as aspas duplas ("
)%%
é usado para formatar o sinal do módulo (%
)s.format(s,...,34,s)
coloca tudo juntoDiferença das saídas / funções:
Mesma abordagem que a maioria das outras respostas:
int i
começa em cada0
,1
ou2
++i%3
transforma este para o próximo (0→1
;1→2
;2→0
)fonte
> <> , 15 bytes
Experimente online!
Usa a mesma forma geral que outros> <> quines, mas possui um caractere extra na frente que é alternado entre 1, 2 e 4.
fonte