Quines são divertidos. Poliglotas são divertidos também. Existem Quines Poliglotas, mas podemos elevar ainda mais a fasquia.
Escreva um arquivo que contenha um programa válido para os idiomas α, β e γ. Quando o arquivo é executado (possivelmente após compilá-lo) como um programa de idioma α ou β, a saída do programa deve ter a mesma forma que uma submissão válida para este concurso. Se o seu arquivo for executado como um programa de idioma γ, ele emitirá um número. O valor desse número é a cadeia de execuções anteriores do programa, interpretada como um número binário.
Essa explicação pode ser um pouco difícil de entender, então aqui está um exemplo. Seja Α, and e functions funções que executam sua entrada como um idioma α, β ou γ resp. programa e retorne a saída desses programas. Seja x um envio válido para este concurso. Então a expressão a seguir, onde processamos x através da linguagem β, α, β, α, α, β e γ nesta ordem, produzirá 41, uma vez que 41 10 = 101001 2 .
Γ (Β (Α (Α (Β (Α () ( x ))))))))
Você não pode assumir que a penúltima execução na cadeia é uma execução na linguagem β. No caso em que o envio original for executado diretamente como um programa de idioma γ, ele deverá imprimir 0.
Seu programa deve se comportar corretamente por até dezesseis compilações na cadeia; isto é, o número mais alto que seu programa pode imprimir no final é 2 15 - 1. É claro que seu programa tem permissão para suportar cadeias de compilação mais longas.
Este é um concurso de popularidade para incentivar soluções criativas. A finalização com o maior número de votos vence.
fonte
magic += Number(System.env.lang_version[-1])
a,b,c
ou1,2,3
=)Respostas:
Python 2, Python 3,> <> (Peixe)
Explicação do Python
Os intérpretes Python 2 e Python 3 funcionam de maneira semelhante, exceto que a
v=int(1/2*2)
variável obtém valores diferentes (0
e1
), pois o Python 2 usa a divisão float e o Python 3 usa a divisão inteira.Em cada execução, eles adicionam a expressão
+0*2
ou+1*2
à primeira linha (depois#;n
) e àx
sequência (após o último comando de gravação). O intérprete> <> usa a primeira adição e os Pythons usam a segunda para criar quines corretos.Código após
B(A(B(B(x))))
:Explicação> <> (Fish)
Quando você executa o intérprete> <>, o ponteiro do código retorna dos
#
envoltórios em torno da primeira linha e a partir do final da primeira linha e na direção oeste começa a empurrar números para a pilha. Se um operador vier (+
ou*
), ele solta os dois principais elementos da pilha e empurra o resultado de volta. Com esse método, terminamos com a representação base2 das execuções anteriores (13
no exemplo anterior). Este é o número desejado, então o produzimosn
e terminamos com;
.fonte