당신의 (언어) 뱀은 얼마나 걸립니까?


14

3 차 퀴네 챌린지 에 이어 가능한 많은 언어를 사용 하는 Ouroboros 프로그램 을 작성해야 합니다.

즉, 언어 A에서 프로그램 pB를 언어 B로 출력하는 프로그램 pA를 작성하십시오. 프로그램 pB는 프로그램 pC를 언어 C로 출력해야하며, 결국 프로그램이 원래 프로그램 pA를 언어 A로 출력 할 때까지 계속됩니다.

루프의 두 언어는 서로 동일하거나 하위 집합 또는 상위 집합이 될 수 없습니다. 루프의 어떤 프로그램도 동일하지 않을 수 있습니다.

가장 긴 언어 체인이 이깁니다. 소스 코드의 길이는 타이 브레이커입니다.

다음은 Ventero가 제공 한 길이 3의 솔루션 예입니다.

s='print q<puts %%q{s=%r;print s%%s}>';print s%s

파이썬 으로이 펄스 니펫을 생성합니다

print q<puts %q{s='print q<puts %%q{s=%r;print s%%s}>';print s%s}>

다음 루비 코드를 생성합니다.

puts %q{s='print q<puts %%q{s=%r;print s%%s}>';print s%s}

그런 다음 원래 Python 스 니펫을 인쇄합니다.

s='print q<puts %%q{s=%r;print s%%s}>';print s%s



@Ypnypn 그것의 복제가 아닌가? 소스 코드 길이의 타이 브레이커로 루프를 최대한 길게 만드는 것입니다. 아무도 전에 4 Ouroborous 길이를 게시 할 기회가 없었습니다 :) 또한 루프는 체인과 다릅니다.

실제로 이것은 이것과 매우 유사 하지만 시퀀스를 반복 할 필요가 없으므로 quine 구성 요소가 없었습니다.
Martin Ender

4
50 개 언어 짐승은 우리가 시작하기 전에 승자 인 것 같습니다.

답변:


8

다음은 4 개 언어로 구성된 루프입니다.

C-> Bash-> Batch-> Python-> C

main(){char *c="echo %cecho print %cmain(){char *c=%c%c%s%c%c;printf(c,34,39,92,34,c,92,34,39,34);}%c%c";printf(c,34,39,92,34,c,92,34,39,34);}

세게 때리다

echo "echo print 'main(){char *c=\"echo %cecho print %cmain(){char *c=%c%c%s%c%c;printf(c,34,39,92,34,c,92,34,39,34);}%c%c\";printf(c,34,39,92,34,c,92,34,39,34);}'"

일괄

echo print 'main(){char *c="echo %cecho print %cmain(){char *c=%c%c%s%c%c;printf(c,34,39,92,34,c,92,34,39,34);}%c%c";printf(c,34,39,92,34,c,92,34,39,34);}'

파이썬

print 'main(){char *c="echo %cecho print %cmain(){char *c=%c%c%s%c%c;printf(c,34,39,92,34,c,92,34,39,34);}%c%c";printf(c,34,39,92,34,c,92,34,39,34);}'

매우 인상적!
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.