Perl 5 , Rubin , JavaScript (Chrom), PHP , Python 2 , Python 3 , 1206 Bytes, Score 6 6 /1206 = 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,"%"))
Validieren Sie Perl, Ruby, PHP, Python 2 und Python 3 online!
Hinweis : Wenn Sie das obige Programm in der Inspector-Konsole in Chrome ausführen (was anscheinend Positionsargumente unterstützt console.log
), wird das richtige Programm zurückgegeben.
Erläuterung
Das war viel länger als ich gehofft hatte und ich habe mein Leben auch ein bisschen schwieriger gemacht, also werde ich wahrscheinlich weiter daran basteln. Ich möchte auch weitere Sprachen hinzufügen, aber ich muss etwas finden, das kein $
Siegel stört ...
Das ist so ziemlich ein Standard quine Format , bei dem die Berechnung der Quote zu verwenden ein wenig anders für jede Sprache ist: in Ruby %q&
verwendet wird, PHP Anwendungen '
, JavaScript (Node.js) nutzt `
und Perl 5 nutzt q(
... )
. Da sich nur die Anführungszeichen ändern, ist der Rest des Programms weiterhin ausführbar und die Syntax in jeder Sprache gültig. Python 2 und 3 werden mit """
Python 2 und '''
Python 3 um das vorherige Programm gewickelt .
Die resultierenden Perl- und Ruby-Programme sind keine Standard-Quines. Bei jeder Iteration werden zusätzliche q
/ %q
s hinzugefügt, aber das erste Programm wird korrekt zurückgegeben.
Die Ergebnisse sind:
- 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,"%"))
Ich habe das viel überarbeitet, ich hoffe, ich habe hier keinen Schlüssel verpasst. Ich habe noch einen weiten Weg vor mir, um in der Nähe von Jo Kings Punktzahl zu sein ...