Escriba un programa que, cuando se ejecuta en diferentes idiomas, genera una permutación de bytes diferente del código en cada idioma. El código fuente exacto se cuenta como una permutación.
Aquí "lenguaje diferente" puede ser una versión diferente (Py 2 y Py 3) o diferentes banderas estándar. Es una salida diferente que obliga a una versión diferente.
Se aplican reglas de quine adecuadas para el programa en cada idioma. Su puntaje se calcula como (Language count)^6/(Code length in bytes)
, con un puntaje más alto es mejor.
Muestra:
Si el código es AAB
en funcionamiento en tres idiomas diferentes rendimientos ABA
, AAB
y AAB
, a continuación, su puntuación es 2^6/3
(sólo uno de los dos AAB
recuento). Está bien si no ABA
tiene sentido.
AAB
imprimeAAB
en el idioma 1 yABA
en el idioma 2, supongo que debe ser una quine adecuada cuando se ve como un programa de idioma 1, y no hay más restricciones que impliquen su interpretación como un programa de lenguaje 2. ¿Está bien?Respuestas:
Befunge-98 , > <> , Gol> <> , fisión , Wumpus , Cardinal , cera de abejas y Alice Puntuación: 8 6 /88 = 2978.909
Pruébalo en Befunge! Pruébalo en> <>! Pruébalo en Gol> <>! Pruébalo en fisión! ¡Pruébalo en Wumpus! ¡Pruébalo en Cardinal! Pruébalo en cera de abejas! Pruébalo en Alice!
¡Verificación!
Muchos lenguajes 2D, todos abusan de los literales de cadena de envoltura. La diferencia en las salidas es así:
> <>, Gol> <> y Befunge-98 imprimen el código al revés (excepto el
"
), con los últimos tres caracteres en diferentes posicionesR*"
,O"*
y"R*
respectivamente. La cera de abejas también tiene el código al revés, pero los últimos tres caracteres están intercalados en la primera sección de la salida. Alice está mayormente al revés, excepto por todos los caracteres escapados ('
,\
y"
) movidos al frente en su lugar.Wumpus es la única quine real, Fission coloca el
"
código al final del código en lugar del principio, y Cardinal coloca el código"
entre el0
y5
cerca del comienzo.Prueba de diferentes permutaciones
Explicaciones:
Befunge-98:
> <> y Gol> <>:
Para ser honesto, no hice mucho aquí. La única diferencia entre la ejecución de estos dos idiomas es el
@
comando, que rota los tres valores principales de la pila de diferentes maneras para cada idioma.Fisión:
Wumpus:
Cardenal:
Cera de abejas:
Alicia:
fuente
Perl 5 , rubíes , JavaScript (cromo), PHP , Python 2 , Python 3 , 1206 bytes, la puntuación 6 6 / 1,206 = 38,6865671641791
¡Valide Perl, Ruby, PHP, Python 2 y Python 3 en línea!
Nota : ejecutar el programa anterior en la consola del Inspector en Chrome (que parece admitir argumentos posicionales
console.log
) devuelve el programa correcto.Explicación
Esto resultó mucho más de lo que esperaba y también hice mi vida un poco más difícil, por lo que es probable que siga jugando. También me gustaría agregar más idiomas, pero necesito encontrar algo que no le
$
importe un sigilo ...Esto es más o menos un formato estándar quine donde el cálculo de la cotización de uso es un poco diferente para cada idioma: en Ruby
%q&
se utiliza, utiliza PHP'
, JavaScript (Node.js) hace uso de`
y Perl 5 utilizaq(
...)
. Debido a que solo cambian las comillas, el resto del programa todavía es ejecutable y una sintaxis válida en cada idioma. Python 2 y 3 se envuelven alrededor del programa anterior usando"""
Python 2 y'''
Python 3.Los programas Perl y Ruby resultantes no son quines estándar, se agregan
q
/%q
s adicionales en cada iteración, pero el primer programa regresa correctamente.Los resultados son:
eval($_=q&
...q&);printf($x=q&
...q&,
...);//#'%`'%`'%`'%`''''''''''''"""
...eval($_=%q&
...%q&);printf($x=%q&
...%q&,
...);//#`'`'`'`'''''''''''''"""
...eval($_=`
...`);printf($x=`
...`,
...);//#%q&'%q&'%q&'%q&'''''''''''''"""
...eval($_='
...');printf($x='
...',
...);//#`q&%`q&%`q&%`q&%''''''''''''"""
......
_="""
...""";
...q="""
...''''''''''''""";print(_.format(Q,_,q[0:-12]+R,"%"))
...
_='''
...''';
...q='''
...""""""""""""''';print(_.format(Q,_,q[0:-12]+R,"%"))
He reelaborado mucho esto, espero no haber perdido nada clave aquí. Todavía tengo mucho camino por recorrer para estar cerca del puntaje de Jo King ...
fuente
Jelly , y M , 2 6 /14 = 4,57
Pruébalo en gelatina!
Pruébalo en M!
Ɗṙ@ȮṾ1“Ɗṙ@ȮṾ1”
en gelatina1Ɗṙ@ȮṾ“1Ɗṙ@ȮṾ”
En mfuente
Quine
en PHP?Python 2 y Python 3 , 2 6 /61 = dispone 1.05
¡Pruébalo en Python 2!
¡Pruébalo en Python 3!
Guardado 12 bytes gracias a Jo King.
Python 2 impresiones
Python 3 impresiones
Esto utiliza el hecho de que
1/2
está.5
en Python 3 y0
en Python 2.fuente
Bash / GolfScript, 72 bytes, puntuación 2 6 /72 = 8/9 (~ 0,888 ...)
Contiene un solo espacio final en las dos primeras líneas.
Pruébelo en línea en Bash.
Pruébelo en línea en GolfScript.
Simplemente modificación de la respuesta de @ jimmy23013 para el desafío " Escribir una poliquina " . La modificación que se realizó fue eliminar el espacio final después de la tercera línea y cambiar
\n"+@n.;
a\n "+@n;
.Bash imprimirá las líneas 1 y 2 de esta manera:
Y GolfScript imprimirá las líneas 1 y 2 de esta manera:
Aquí el programa base, la salida Bash y las salidas GolfScript respectivamente con las nuevas líneas reemplazadas por
\n
:fuente