Perl 5 , Ruby , JavaScript (Chrome), PHP , Python 2 , Python 3 , 1206 bytes, mencetak 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,"%"))
Validasi Perl, Ruby, PHP, Python 2 dan Python 3 online!
Catatan : menjalankan program di atas di konsol Inspektur di Chrome (yang muncul untuk mendukung argumen posisiconsole.log
) mengembalikan program yang benar.
Penjelasan
Ini ternyata jauh lebih lama dari yang saya harapkan dan saya membuat hidup saya sedikit lebih sulit juga, jadi saya cenderung terus mengotak-atiknya. Saya juga ingin menambahkan lebih banyak bahasa, tetapi saya perlu menemukan sesuatu yang tidak masalah$
sigil ...
Ini cukup banyak format Quine standar dimana perhitungan kutipan untuk digunakan sedikit berbeda untuk setiap bahasa: di Ruby %q&
digunakan, PHP menggunakan '
, JavaScript (Node.js) memanfaatkan `
dan Perl 5 Memanfaatkan q(
... )
. Karena hanya tanda kutip yang berubah, sisa dari program ini masih dapat dieksekusi dan sintaks yang valid dalam setiap bahasa. Python 2 dan 3 dililit program sebelumnya menggunakan """
untuk Python 2 dan '''
untuk Python 3.
Resultan program Perl dan Ruby tidak quines standar, tambahan q
/ %q
s ditambahkan setiap iterasi, namun kembali program pertama dengan benar.
Hasilnya adalah:
- 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,"%"))
Saya sudah sering mengerjakan ulang ini, saya harap saya tidak melewatkan kunci apa pun di sini. Saya masih memiliki cara untuk pergi ke mana saja di dekat skor Jo King ...