Palindrome-Polyglot-Quineを書く


25

あるプログラム:「palipolyquine」書くQUINEポリグロット、および回文を

ルール:

  • ポリグロット言語の数は、コードサイズよりも望ましいです。
  • 同点の場合、最短回答(バイト単位)が勝ちです。
  • ポリグロットとクインのルールについては、ポリキンを記述してください

私の例(私はテストのあるFreaky-Sourcesリポジトリを持っています):

C#/ Java(1747バイト):

/**///\u000A\u002F\u002A
using System;//\u002A\u002F
class Program{public static void//\u000A\u002F\u002A
Main//\u002A\u002Fmain
(String[]z){String s="`**?`@#_^using System;?_#^class Program{public static void?@#_^Main?_#main^(String[]z){String s=!$!,t=s;int i;int[]a=new int[]{33,94,38,64,35,95,96,63,36};String[]b=new String[]{!&!!,!&n!,!&&!,!&@!,!&#!,!&_!,!`!,!?!,s};for(i=0;i<9;i++)t=t.?@#_^Replace?_#replace^(!!+(char)a[i],b[i]);t+='*';for(i=872;i>=0;i--)t=t+t?@#_^[i];Console.Write?_#.charAt(i);System.out.printf^(t);}}/",t=s;int i;int[]a=new int[]{33,94,38,64,35,95,96,63,36};String[]b=new String[]{"\"","\n","\\","\\u000A","\\u002F","\\u002A","/","//",s};for(i=0;i<9;i++)t=t.//\u000A\u002F\u002A
Replace//\u002A\u002Freplace
(""+(char)a[i],b[i]);t+='*';for(i=872;i>=0;i--)t=t+t//\u000A\u002F\u002A
[i];Console.Write//\u002A\u002F.charAt(i);System.out.printf
(t);}}/*/}};)t(
ftnirp.tuo.metsyS;)i(tArahc.F200u\A200u\//etirW.elosnoC;]i[
A200u\F200u\A000u\//t+t=t)--i;0=>i;278=i(rof;'*'=+t;)]i[b,]i[a)rahc(+""(
ecalperF200u\A200u\//ecalpeR
A200u\F200u\A000u\//.t=t)++i;9<i;0=i(rof;}s,"//","/","A200u\\","F200u\\","A000u\\","\\","n\",""\"{][gnirtS wen=b][gnirtS;}63,36,69,59,53,46,83,49,33{][tni wen=a][tni;i tni;s=t,"/}};)t(^ftnirp.tuo.metsyS;)i(tArahc.#_?etirW.elosnoC;]i[^_#@?t+t=t)--i;0=>i;278=i(rof;'*'=+t;)]i[b,]i[a)rahc(+!!(^ecalper#_?ecalpeR^_#@?.t=t)++i;9<i;0=i(rof;}s,!?!,!`!,!_&!,!#&!,!@&!,!&&!,!n&!,!!&!{][gnirtS wen=b][gnirtS;}63,36,69,59,53,46,83,49,33{][tni wen=a][tni;i tni;s=t,!$!=s gnirtS{)z][gnirtS(^niam#_?niaM^_#@?diov citats cilbup{margorP ssalc^#_?;metsyS gnisu^_#@`?**`"=s gnirtS{)z][gnirtS(
niamF200u\A200u\//niaM
A200u\F200u\A000u\//diov citats cilbup{margorP ssalc
F200u\A200u\//;metsyS gnisu
A200u\F200u\A000u\///**/

ideone.comで入手可能なコンパイル:C#Java


2
ポリキンの作成に関連するルールはありますか?制限はありますか?この質問がそのままの場合、可能な(簡単な)解決策は11ここで多くの言語で出力され、回文的です)です。
clismique

より正式なルールを追加しました。
イヴァンコチャーキン16

2
ああ、かっこいい。さて、あなたの最初の挑戦で幸運を!ただし、コードブロックは実際には必要ないので、他のチャレンジからここにルールを移行する必要があります。
clismique

1
5言語の999バイトの回答は4言語の100バイトの回答に勝りますか?
ETHproductions

@ETHproductions、そうだと思う。行数を減らすよりも新しい言語を追加するのは難しいです。
イヴァンコチャーキン16

回答:


14

CJam / GolfScript、2言語、50バイト

{`"0$~e#"+0$-1%"":n}0$~e##e~$0}n:""%1-$0+"#e~$0"`{

CJamをお試しください! GolfScriptで試してください!

ええと、これは驚くほど長く答えられませんでした。

説明

これを説明するのはおそらく、各言語の基本的なクインを回文的多声クインに変えた方法を示すことでおそらく最も簡単でしょう。

したがって、両方の言語の基本的なクインは次のとおりです。

{".~"}.~

{"_~"}_~

GolfScriptとCJamでそれぞれ。これらは、CJamが元々GolfScriptに触発されたという事実のおかげで非常に似ています(しかし、それ以来かなり逸脱しています)。私たちが気づく最初の違いは、1つ.がスタックの最上部の複製に使用し、もう1つが使用すること_です。0$両方の言語には「copy-nth-item-on-stack」演算子があるため、この問題を回避する一般的なトリックはを使用すること$です。ですから{"0$~"}0$~、GolfScriptの末尾の改行が必要ですが、を取得します。しかし、最後にそれについて心配しましょう。

まず、回文にする必要があります。これに対する明白な解決策は、コメントを追加し、ソースコードを逆に配置することです。CJamはe#コメントに使用するため、これは非常に簡単です。GolfScriptではe何も行わず、#コメントです。したがってe#...、両方の言語で機能するように追加する場合。ここに私たちが持っているものがあります:

{"0$~"}0$~e##e~$0}"~$0"{

もちろん、それ以降は実際にパーツが印刷されるわけではありませんe#。これはソースコード自体から非常に簡単に再構築できます。どちらの言語も、最初のブロックを文字列withに変換し、`その"0$~"一部をwith +に追加して、ミラー化されていないソースコード全体を1つの文字列で取得できます。ミラーリングされたコピーを追加するために必要なことは、文字列を0$もう一度複製してから、で逆にするだけ-1%です。これは両方の言語でも機能します。だから今、私たちはこれを持っています:

{`"0$~e#"+0$-1%}0$~e##e~$0}%1-$0+"#e~$0"`{

これはCJamで有効なパリンドロームクインであり、GolfScriptでも機能しますが、依然として厄介な後続のラインフィードを出力します。

これを防ぐ通常の方法は、空の文字列をに割り当てるnことです。GolfScriptが実際に行うのはn、最後にの内容を印刷するからです。必要なのは"":nです。それでは、CJamはどうですか?ありがたいことに、これは何もしません。""また、空の文字列(または空のリスト、CJamでは同じもの)であり、リスト:上に演算子n(改行付き印刷)をマップします。しかし、リストは空なので、その上に演算子をマッピングしても何も起こりません。したがって、CJamをいじらずに改行を削除し、最終的な解決策を得ることができます。

{`"0$~e#"+0$-1%"":n}0$~e##e~$0}n:""%1-$0+"#e~$0"`{

5

Perl 5 / Ruby / PHP / JavaScript(ブラウザ)、4言語、513バイト

$_='$z=0?"$&".next: eval("printf=console.log;atob`JCc`");printf("%s_=%s%s%s;eval(%s_);//#//;)_%s(lave;%s%s%s=_%s",$d=$z[0]||h^L,$q=$z[1]||h^O,$_,$q,$d,$d,$q,"0"?$_.split("").reverse().join(""):~~reverse,$q,$d)';eval($_);//#//;)_$(lave;')d$,q$,esrever~~:)""(nioj.)(esrever.)""(tilps._$?"0",q$,d$,d$,q$,_$,O^h||]1[z$=q$,L^h||]0[z$=d$,"s%_=s%s%s%;eval(s%_);//#//;)_s%(lave;s%s%s%=_s%"(ftnirp;)"`cCJ`bota;gol.elosnoc=ftnirp"(lave :txen."&$"?0=z$'=_$

Perlをオンラインでお試しください!
オンラインでお試しください!
PHPをオンラインでお試しください!
オンラインで検証してください!

$_='$z=0?"$&".next: eval("printf=console.log;atob`JCc`");printf("%s_=%s%s%s;eval(%s_);//#//;)_%s(lave;%s%s%s=_%s",$d=$z[0]||h^L,$q=$z[1]||h^O,$_,$q,$d,$d,$q,"0"?$_.split("").reverse().join(""):~~reverse,$q,$d)';eval($_);//#//;)_$(lave;')d$,q$,esrever~~:)""(nioj.)(esrever.)""(tilps._$?"0",q$,d$,d$,q$,_$,O^h||]1[z$=q$,L^h||]0[z$=d$,"s%_=s%s%s%;eval(s%_);//#//;)_s%(lave;s%s%s%=_s%"(ftnirp;)"`cCJ`bota;gol.elosnoc=ftnirp"(lave :txen."&$"?0=z$'=_$

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