Perl 5 , Ruby , JavaScript (chrome), PHP , Python 2 , python 3 , 1206 octets, le score de 6 6 /1 206 = 38,6865671641791
q=1//2;s=+0;s|0;"/.__id__;#";_="""q=1//2;s=+0;s|0;"/.__id__;#";_={0}{1}{0};R=chr((39,34)[1/2>0])*12;Q=chr((39,34)[1/2==0])*3;q={0}{2}{0};print(_.format(Q,_,q[0:-12]+R,"%"))""";R=chr((39,34)[1/2>0])*12;Q=chr((39,34)[1/2==0])*3;q="""|;#<?ob_end_clean();
eval($_='"$t"?0?[$q=37 .chr+113 .chr+38 .chr,$p=(96 .chr+39 .chr)*4,$n=10 .chr,$s=39 .chr*12,$S=34 .chr*3]:eval("printf=console.log;c=String.fromCharCode;$q=c(96);$p=c(37,113,38,39).repeat(4);$n=c(10);$s=c(39).repeat(12);$S=c(34,34,34)"):[]?[$q=q(!g)^PA,$p=HARHARHARHAR^od2od2od2od2,$n=R^X,$s=bbbbbbbbbbbb^EEEEEEEEEEEE,$S=hhh^JJJ]:[$q=O^h,$p=str_repeat(RHa3^w9GS,4),$n=R^X,$s=str_repeat(b^E,12),$S=HHH^jjj];//#');printf($x='q=1//2;s=+0;s|0;"/.__id__;#";_=%7$sq=1//2;s=+0;s|0;"/.__id__;#";_={0}{1}{0};R=chr((39,34)[1/2>0])*12;Q=chr((39,34)[1/2==0])*3;q={0}{2}{0};print(_.format(Q,_,q[0:-12]+R,"%8$s"))%7$s;R=chr((39,34)[1/2>0])*12;Q=chr((39,34)[1/2==0])*3;q=%7$s|;#<?ob_end_clean();%5$seval($_=%3$s%1$s%3$s);printf($x=%3$s%2$s%3$s,$_,$x,$q,$p,$n,$s,$S,"%8$s",![]||([]+[])?$n:"");//#%4$s%6$s%7$s;print(_.format(Q,_,q[0:-12]+R,"%8$s"))%9$s',$_,$x,$q,$p,$n,$s,$S,"%",![]||([]+[])?$n:"");//#`q&%`q&%`q&%`q&%''''''''''''""";print(_.format(Q,_,q[0:-12]+R,"%"))
Validez Perl, Ruby, PHP, Python 2 et Python 3 en ligne!
Remarque : l'exécution du programme ci-dessus dans la console Inspector dans Chrome (qui semble prendre en charge les arguments de position console.log
) renvoie le programme correct.
Explication
Cela s'est avéré beaucoup plus long que je ne l'avais espéré et j'ai rendu ma vie un peu plus difficile aussi, donc je vais probablement continuer à la bricoler. J'aimerais aussi ajouter plus de langues, mais je dois trouver quelque chose qui ne me dérange pas un $
sceau ...
Ceci est à peu près un format standard Quine où le calcul de la citation à utiliser est un peu différent pour chaque langue: Ruby %q&
est utilisé, utilise PHP '
, JavaScript (Node.js) utilise `
et Perl 5 Utilise q(
... )
. Étant donné que seules les guillemets changent, le reste du programme est toujours une syntaxe exécutable et valide dans chaque langue. Python 2 et 3 sont enroulés autour du programme précédent en utilisant """
pour Python 2 et '''
pour Python 3.
Les programmes Perl et Ruby résultants ne sont pas des quines standard, des q
/ %q
s supplémentaires sont ajoutés à chaque itération, mais le premier programme revient correctement.
Les résultats sont:
- Perl 5:
eval($_=q&
... q&);printf($x=q&
... q&,
... );//#'%`'%`'%`'%`''''''''''''"""
...
- Ruby:
eval($_=%q&
... %q&);printf($x=%q&
... %q&,
... );//#`'`'`'`'''''''''''''"""
...
- JavaScript (Chrome):
eval($_=`
... `);printf($x=`
... `,
... );//#%q&'%q&'%q&'%q&'''''''''''''"""
...
- PHP:
eval($_='
... ');printf($x='
... ',
... );//#`q&%`q&%`q&%`q&%''''''''''''"""
...
- Python 2:
... _="""
... """;
... q="""
...''''''''''''""";print(_.format(Q,_,q[0:-12]+R,"%"))
- Python 3:
... _='''
... ''';
... q='''
...""""""""""""''';print(_.format(Q,_,q[0:-12]+R,"%"))
J'ai beaucoup retravaillé cela, j'espère que je n'ai rien oublié de clé ici. Il me reste encore beaucoup de chemin à parcourir pour être proche du score de Jo King ...