你的(语言)蛇多久了?


14

三阶奎因挑战之后,您的任务是编写一个使用尽可能多语言的Ouroboros程序。

也就是说,用语言A编写程序pA,该程序以语言B输出程序pB。程序pB应该以语言C输出程序pC,依此类推,直到最终程序以语言A输出原始程序pA。

循环中没有两种语言可以是相同的,也不能是彼此的子集或超集。循环中的所有程序都不相同。

最长的语言链胜出。源代码的长度为平局。

这是Ventero给出的长度为3的示例解决方案。

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

使用Python生成此Perl代码段

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

生成以下Ruby代码

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的内容:)另外,循环与链不同。

它实际上与此非常相似,但是它不需要序列来回循环,因此没有奎因成分。
Martin Ender 2014年

4
在我们开始之前,这50种语言的野兽似乎是赢家。

Answers:


8

这是4种语言的循环:

C-> Bash->批处理-> Python-> C

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);}'

非常令人印象深刻!
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.