회문-폴리 글롯-퀸을 쓰십시오


25

A는 프로그램 :는 "palipolyquine"쓰기 quine 하는 수개 국어회문을 .

규칙 :

  • 코드 크기보다 폴리 글 로트 언어의 수가 더 좋습니다.
  • 동점 일 경우 가장 짧은 답변 (바이트)이 이깁니다.
  • Polyglot 및 Quine 규칙은 다음을 참조하십시오 : Polyquine 작성 .

내 예 ( 테스트 가있는 저장소 Freaky-Sources 가 있습니다) :

C # / 자바 (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 #을 , 자바 .


2
폴리 퀸을 만드는 데 관련된 규칙이 있습니까? 어떤 제한이 있습니까? 이 질문이있는 경우 가능한 (사소한) 해결책이 있습니다 1( 1여기에서 많은 언어로 출력 되며 회 문식입니다).
clismique

더 공식적인 규칙을 추가했습니다.
Ivan Kochurkin

2
아, 멋지다. 첫 도전에 행운을 빕니다! 그러나 더 많은 것들이 있습니다 : 실제로 코드 블록이 필요하지 않으며 다른 도전에서 규칙을 여기로 마이그레이션해야 할 것입니다.
clismique

1
5 개 언어, 999 바이트 답변이 4 개 언어, 100 바이트 답변을 능가합니까?
ETHproductions

@ETHproductions, 예라고 생각합니다. 줄 수를 줄이는 것보다 새로운 언어를 추가하기가 어렵습니다.
Ivan Kochurkin

답변:


14

CJam / GolfScript , 2 개 언어, 50 바이트

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

CJam을 사용해보십시오! GolfScript에서 사용해보십시오!

허, 이것은 놀랍게도 오래 걸리지 않았습니다.

설명

각 언어의 기본 퀴니를 회문 폴리 글 로트 퀴니로 어떻게 바꾸 었는지 보여줌으로써 이것을 설명하는 것이 가장 쉬운 방법 일 것입니다.

따라서 두 언어의 기본 quines는 다음과 같습니다.

{".~"}.~

{"_~"}_~

GolfScript와 CJam에서 각각 CJam은 원래 GolfScript에서 영감을 받았다는 사실 덕분에 상당히 비슷합니다 (그러나 그 이후로 상당히 많이 벗어났습니다). 우리가 알아 차린 첫 번째 차이점은 하나는 .스택의 상단을 복제하는 데 사용되고 다른 하나는 다른 용도로 사용된다는 것 _입니다. 0$두 언어 모두에 "copy-nth-item-on-stack"연산자가 있기 때문에이 문제를 피하는 일반적인 방법은 사용하는 것 $입니다. 따라서 {"0$~"}0$~GolfScript에서 여전히 줄 바꿈이 필요하지만을 얻습니다. 그러나 마지막에 그것에 대해 걱정합시다.

먼저, 회문으로 만들어야합니다. 이에 대한 확실한 해결책은 주석을 추가하고 소스 코드를 반대로 만드는 것입니다. CJam은 e#주석에 사용하고 GolfScript e에서는 전혀 아무것도하지 않으며 주석 이기 때문에 이것은 매우 간단 #합니다. 추가 e#...하면 두 언어 모두에서 작동합니다. 우리가 가진 것은 다음과 같습니다.

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

물론 실제로 부품을 인쇄 하지는 않습니다 e#. 우리는 이것을 소스 코드 자체에서 아주 쉽게 재구성 할 수 있습니다. 두 언어 모두 초기 블록을로 문자열로 변환하고로 부분을 `추가하여 미러되지 않은 전체 소스 코드를 단일 문자열로 얻을 수 있습니다. 미러 된 사본을 추가하려면 문자열을 다시 복제 한 다음로 바꾸면 됩니다. 두 언어로도 작동합니다. 이제 우리는 이것을 얻었습니다."0$~"+0$-1%

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

CJam에서 유효한 palindromic quine이며 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.