注文の数


10

異なる言語で実行したときに、各言語でコードの異なるバイト順列を出力するプログラムを作成します。正確なソースコードは1つの順列としてカウントされます。

ここで「異なる言語」は、異なるバージョン(Py 2とPy 3)または異なる標準フラグにすることができます。異なるバージョンを強制するのは異なる出力です。

各言語のプログラムには、適切なクインルールが適用されます。スコアはとして計算され(Language count)^6/(Code length in bytes)、スコアが高いほど優れています。

サンプル:

コードがでAABあり、3つの異なる言語で実行されている場合ABAAABとが返されます。AABスコアは2^6/3(2つのAABカウントのうちの1つのみ)です。ABA意味がなくても大丈夫です。


1
何が別の言語として数えられますか?
Laikoni

4
適切なクインのどの定義が適用されますか?(マーティン、またはais523、またはこれらのメタスレッドでのその他の定義?)適切なクインルールは、実際にはクインであるプログラムの解釈にのみ適用されますか?(それだけの価値があるので、私はこの課題が適切なクインルールを適用することで大幅に改善されるとは思いません。)
Lynn

明確にするために、あなたの例に取り組んでください—私のコードが言語1と言語2でAAB印刷さAABれる場合ABA、私はそれを言語1プログラムとして表示したときに適切なクインである必要があると想定し、その解釈に関するさらなる制限はありません言語2プログラム。そうですか?
リン

1
コードの長さは文字またはバイトでカウントされますか?さまざまな文字エンコーディングをどうすればよいですか?
ディルナン

1
バイト対文字はどうですか?
ディルナン

回答:


10

Befunge-98>、<> ゴル> <> 核分裂Wumpusのカーディナル蜜蝋およびアリススコア:8 6 /88 = 2978.909

"65*4+059*$!#.39*0jp2+'Wk,@ ''5&.'\d&o@o&88#+\@ol?!,'.'0.6'!+Ox,++tttt=++%-$#}.6~.F4*`*R

Befungeでお試しください! > <>でお試しください! Gol> <>でお試しください! 分裂でそれを試してみてください! Wumpusでお試しください! 枢機卿でそれをお試しください! 蜜蝋でお試しください! アリスでお試しください!

検証!

たくさんの2D言語、すべての乱用ラッピング文字列リテラル。したがって、出力の違いは次のとおりです。

> <>、Gol> <>、およびBefunge-98はすべて、コードを逆方向に出力し(を除く")、最後の3文字がそれぞれ異なる位置R*"O"*あり"R*ます。Beeswaxもコードを逆にしていますが、最後の3文字が出力の最初のセクションに散在しています。代わりに、エスケープされたすべての文字('\および")が前に移動したことを除いて、アリスはほとんど後ろ向きです。

実際のクインはWumpusだけで、Fissionは"コードの最初ではなく最後にを配置し、Cardinalはとその近くの"間に0を配置し5ます。

異なる順列の証明

説明:

Befunge-98:

"  Wrapping string literal pushes all other characters + a space to the stack
 65*4+  Push " to the stack
      059*$!#.39*0j   Push 1,27 to the stack
                   p  Pops the top three values of the stack (27,1,34)
                    2+  Adds 2 to the space to make "
                      'Wk,@  Prints the top 88 characters of the stack and terminates

> <>とGol> <>:

正直なところ、ここではあまり行いませんでした。これら2つの言語の実行の唯一の違いは@コマンドです。このコマンドは、スタックの上位3つの値を言語ごとに異なる方法でローテーションします。

"  Wrapping string literal pushes all other characters to the stack
 65*4+  Push 34 (") to the stack
      059*$!#.  Jump to cell 45,0
                                   \@  Rotate the top three values of the stack 
                                     ol?!,'.'0.  Output the whole stack, ending in a divide by 0/stack underflow error

分裂:

 "............R  Spawn a pointer going right

 "  Switch to printing mode and print every other character
 "  Switch off printing mode
  6  Teleport to other 6
 "........6'!+O   Print the "

ワンパス:

"  Bouncing string literal
 65*4+  Push a (")
      059*$!#.   Push 0 and jump to cell 0,45
                                        \  Reflect off mirror
                                       +   Add 0 to top of stack
                                 @o&88#    Print the top 88 characters of the stack

枢機卿:

                                 %   Spawn two pointer going left/right (up/down despawn immediately)
                                  -$  Right pointer jumps to cell -1,0
                      x,++tttt=++     Left pointer prints "
"  While right pointer switches to print mode and prints the code

蜜蝋:

 "................*`*   Spawn pointers going in every direction
                        Every other * also spawns pointers, but they do nothing
                   `    Turn on print mode for two of the pointers going in different directions
                        This prints everything but the `
          #}.6~.F4*     Print a `

アリス:

"  Wrapping string literal pushes all other characters to the stack
   Except 's and mirrors
 65*4+  Push " to the stack
      059*$!#.  Does nothing
              39*0j  Jumps to cell 39,0
                         ''5&.    Push ' and duplicate it 5 times
                              '\  Push \
                                d&o@  Print the whole stack

6

5 PERLルビーは、JavaScript(クロム)、PHPPythonの2パイソン3、1206バイト、スコア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,"%"))

Perl、Ruby、PHP、Python 2およびPython 3をオンラインで検証してください!

:上記のプログラムをChromeのインスペクターコンソール(への位置引数をサポートしているように見えるconsole.log)で実行すると、正しいプログラムが返されます。

説明

これは私が期待したよりもずっと長くなり、私も人生を少し難しくしたので、それをいじくり続けるつもりです。私ももっと言語を追加したいのですが、$印を気にしないものを見つける必要があります...

これはかなり標準的なクイン形式で、使用する見積もりの​​計算は言語ごとに少し異なります。Ruby %q&ではPHPが使用され'、JavaScript(Node.js)ではJavaScript が使用され、`Perl 5ではq(...が使用されます)。引用符のみが変更されるため、プログラムの残りの部分は引き続き実行可能であり、各言語で有効な構文です。Python 2および3は"""、Python 2および'''Python 3 を使用して 、前のプログラムを囲んでいます。

結果のPerlおよびRubyプログラムは標準的なクインではなく、追加のq/ %qが反復ごとに追加されますが、最初のプログラムは正しく戻ります。

結果は次のとおりです。

  • 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,"%"))

私はこれをたくさん作り直しました、ここで何か重要なものを見逃していないことを願っています。私はまだジョーキングのスコアの近くに行くためのかなりの方法があります...


2

ゼリー、及びM、2 6 / 4.57 = 14

1Ɗṙ@“1Ɗṙ@ȮṾ”ȮṾ

ゼリーでお試しください!

Mでお試しください!

Ɗṙ@ȮṾ1“Ɗṙ@ȮṾ1” ゼリーで

1Ɗṙ@ȮṾ“1Ɗṙ@ȮṾ” Mで


木炭が適切な
クイン

@ H.PWiz私はそれを言っているコメントを追加しようとしていました。OPに質問します
-dylnan

@ l4m2木炭プログラムは適切なクインだと思いますか?なければ削除します。
ディルナン

QuinePHP のようだと思いますか?
l4m2

@ l4m2わからない、PHPは知らない。私が思うほとんどのASCIIテキストで機能します
dylnan

2

パイソン2及びパイソン3、2 6 /61 = 1.05

s='s=%r;print(s%%s[::(1/2>0)*2-1])';print(s%s[::(1/2>0)*2-1])

Python 2でお試しください!

Python 3でお試しください!

Jo Kingのおかげで12バイトが節約されました。

Python 2のプリント

s=')]1-2*)0>2/1(::[s%%s(tnirp;r%=s';print(s%s[::(1/2>0)*2-1])

Python 3のプリント

s='s=%r;print(s%%s[::(1/2>0)*2-1])';print(s%s[::(1/2>0)*2-1])

これ1/2.5、Python 3および0Python 2 の事実を利用しています。


1

バッシュ/ GolfScript、72バイト、スコア2 6 /72 = 8/9(〜0.888 ...)を

.~0 () 
{ 
    declare "-f" @* ".~0" " ()
 "+@n.;
    echo '.~0;'
}
.~0;

最初の2行に単一の後続スペースが含まれます。

Bashでオンラインでお試しください。
GolfScriptでオンラインでお試しください。

Write a Polyquine」チャレンジに対する@ jimmy23013の回答を単に変更したものです。行われた変更は、3行目以降の末尾のスペースを削除し、に変更する\n"+@n.;こと\n "+@n;でした。

Bashは次のように1行目と2行目を出力します。

.~0 ()    <- Trailing space
{         <- Trailing space

そして、GolfScriptは次のように1行目と2行目を出力します。

.~0 ()   <- No trailing space
 {       <- Both leading and trailing space

ここでは、基本プログラム、Bash出力、およびGolfScript出力で、改行が\n次のように置き換えられています。

.~0 () \n{ \n    declare "-f" @* ".~0" " ()\n "+@n.;\n    echo '.~0;'\n}\n.~0;
.~0 () \n{ \n    declare "-f" @* ".~0" " ()\n "+@n.;\n    echo '.~0;'\n}\n.~0;
.~0 ()\n { \n    declare "-f" @* ".~0" " ()\n "+@n.;\n    echo '.~0;'\n}\n.~0;

      ^^^ Note the difference here
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.