Do Quine central :
Escreva um quine que tome como entrada o nome de um idioma e produza a mesma coisa implementada no idioma de entrada.
O artigo de origem tem algo com o qual você pode trabalhar, mas, como o autor diz, isso é muito mais difícil. Obviamente, você só precisa oferecer suporte a um conjunto limitado de idiomas. A escolha é sua, assim como o idioma base.
Como desafio de código , sua pontuação será o número de idiomas que seu programa suporta; mais alto é melhor.
code-challenge
quine
marcog
fonte
fonte
Respostas:
Rubi
Pitão
Ambas as versões aceitam stdin (
ruby
oupython
atualmente) e geram a saída para stdout nos dois idiomas.fonte
Turtlèd , Python 2 e Python 3, 3, competindo apenas por prêmios
todos os oneliners seguidos por nova linha
Turtlèd
Experimente online!
Python 2
Experimente online!
Python 3
Experimente online!
Explicação:
Para cada idioma, eu peguei o quines já escrito e os modifiquei um pouco.
Turtlèd primeiro:
Turtlèd inclui a estrutura padrão de quine. no entanto, se a entrada terminar com 2 ou 3, anexará o final do código python, 2 ou 3, incluirá os dois separadamente na saída quine e, em seguida, voltará ao início e adicionará
x='
. Caso contrário, o código-fonte é deixado e produzido como uma solução normalObserve também que ele recebe entrada duas vezes
!!.
, porque a fonte contém uma nova linha que é alimentada para inserir uma linha vazia.no entanto, ao longo do caminho para o início da string, para evitar o fato de que a string não pode ter
'
nela, ela muda toda a'
fonte principal ao longo do caminho paray
. se isso acontecesse, o escape da citação poderia ser irritante, se possívelisso depende de um truque; Eu não poderia ter escrito
(''y)
,(pseudocode:if cell is ', write y)
porque então isso seria indistinguível de a '. então, eu uso oy da entrada "Python"! este foi um verdadeiro momento eureka para mim.então, existem as coisas de python quinelike.
Como a coisa python quinelike funciona:
funciona como uma solução normal, exceto que também inclui a variável x
se tiver introduzido o Python 3, funciona como uma solução regular e usa% de formatação para incluir também a fonte do Turtlèd.
se tiver introduzido o Python 2, ele substitui
input
na string porraw_input
e, de outra forma, faz exatamente a mesma coisa.se a entrada for Turtlèd, ela substitui os
y
s na fonte Turtlèd e a imprime.Os dois programas python funcionam da mesma maneira e recebem entradas da mesma maneira
fonte