Las quines son divertidas. Los políglotas también son divertidos. Existen polígonos quines, pero podemos elevar el listón aún más alto.
Escriba un archivo que contenga un programa válido para los idiomas α, β y γ. Cuando el archivo se ejecuta (posiblemente después de compilarlo) como un programa de lenguaje α o β, la salida del programa tendrá la misma forma que una presentación válida para este concurso. Si su archivo se ejecuta como un programa de lenguaje γ, generará un número. El valor de este número es la cadena de ejecuciones anteriores del programa interpretado como un número binario.
Esta explicación puede ser un poco difícil de entender, así que aquí hay un ejemplo. Supongamos que Α, Β y Γ sean funciones que ejecutan su entrada como lenguaje α, β o γ resp. programa y devuelve la salida de estos programas. Sea x una presentación válida para este concurso. Luego, la siguiente expresión, donde procesamos x a través del lenguaje β, α, β, α, α, β y γ en este orden, dará 41, ya que 41 10 = 101001 2 .
Γ (Β (Α (Α (Β (Α (Β ( x )))))))
No puede suponer que la penúltima ejecución en la cadena es una ejecución en lenguaje β. Para el caso donde su envío original se ejecuta directamente como un programa de lenguaje γ, imprimirá 0.
Su programa se comportará correctamente para hasta dieciséis compilaciones en la cadena; es decir, el número más alto que su programa podría imprimir al final es 2 15 - 1. Por supuesto, su programa puede soportar cadenas de compilación más largas.
Este es un concurso de popularidad para fomentar soluciones creativas. La presentación con el mayor número de votos gana.
fuente
magic += Number(System.env.lang_version[-1])
a,b,c
o1,2,3
=)Respuestas:
Python 2, Python 3,> <> (Pez)
Explicación de Python
Los intérpretes de Python 2 y Python 3 funcionan de manera similar, excepto que la
v=int(1/2*2)
variable obtiene valores diferentes (0
y1
) ya que Python 2 usa división flotante y Python 3 usa división entera.En cada ejecución agregan la expresión
+0*2
o+1*2
a la primera línea (después#;n
) y a lax
cadena (después del último comando de escritura). El intérprete> <> usa la primera adición y las Pitones usan la segunda para crear las quines correctas.Código después de
B(A(B(B(x))))
:> <> Explicación (pescado)
Cuando ejecuta el intérprete> <>, el puntero del código se recupera de las
#
envolturas alrededor de la primera línea y comienza desde el final de la primera línea y hacia el oeste comienza a insertar números en la pila. Si viene un operador (+
o*
) saca los dos elementos superiores de la pila y hace retroceder el resultado. Con este método, terminamos con la representación en base2 de las ejecuciones anteriores (13
en el ejemplo anterior). Este es el número deseado, así que lo sacamos y terminamosn
con;
.fuente