swgr's Blog
闲的蛋疼,挑战一下Quine...
刚睡醒,比较闲,小玩一下...
以下这段代码是一个C语言程序,它的输出是一个Java语言程序的源代码,这个Java程序的输出恰好是之前那个C语言程序的代码本身...
main(a,b){char c[1024];a="public class Main{public static void main(String[]args){String a=%%c%%s%%c;String b=%%c%%s%%c;String c=String.format(a);System.out.printf(c,34,b,34,34,a,34);}}";b="main(a,b){char c[1024];a=%%c%%s%%c;b=%%c%%s%%c;sprintf(c,a);printf(c,34,b,34,34,a,34);}";sprintf(c,a);printf(c,34,b,34,34,a,34);}
语法高亮的版本:(显然加上了缩进的话就不正确了...要跑还是得用上面那段)
main(a,b) { char c[1024]; a="public class Main \ { \ public static void main(String[]args) \ { \ String a=%%c%%s%%c; \ String b=%%c%%s%%c; \ String c=String.format(a); \ System.out.printf(c,34,b,34,34,a,34); \ } }"; b="main(a,b) \ { \ char c[1024]; \ a=%%c%%s%%c; \ b=%%c%%s%%c; \ sprintf(c,a); \ printf(c,34,b,34,34,a,34); \ }"; sprintf(c,a); printf(c,34,b,34,34,a,34); }
最后附上对偶的Java代码(就是上面这个C语言程序的输出结果:)
public class Main{public static void main(String[]args){String a="main(a,b){char c[1024];a=%%c%%s%%c;b=%%c%%s%%c;sprintf(c,a);printf(c,34,b,34,34,a,34);}";String b="public class Main{public static void main(String[]args){String a=%%c%%s%%c;String b=%%c%%s%%c;String c=String.format(a);System.out.printf(c,34,b,34,34,a,34);}}";String c=String.format(a);System.out.printf(c,34,b,34,34,a,34);}}
语法高亮的版本:
public class Main { public static void main(String[]args) { String a="main(a,b) { char c[1024]; a=%%c%%s%%c; b=%%c%%s%%c; sprintf(c,a); printf(c,34,b,34,34,a,34); }"; String b="public class Main { public static void main(String[]args) { String a=%%c%%s%%c; String b=%%c%%s%%c; String c=String.format(a); System.out.printf(c,34,b,34,34,a,34); } }"; String c=String.format(a); System.out.printf(c,34,b,34,34,a,34); } }
注:两个编译器分别是gcc 3.4.5和jdk 1.6.0_23。
----------------------------------------------------
后记:写完这段代码后,ACM_DIY群友[HIT]Larry告诉了我这么一个神一样的存在:
简介:这段ruby代码,相当牛,如作者所说,运行这段ruby,生成一段python代码,再运行python代码,生成一段perl代码,再运行perl代码,生成一段lua代码。。。这样一直下去,经过11种语言,最后。。。居然又能重新得到之前的ruby代码。。
这11种语言是:ruby 1.8.7-p72、Python 2.5.2、perl v5.10.0、Lua 5.0.3、OCaml 3.10.2、ghc-6.8.2、gcc 4.3.2、java “1.5.0_17″、beef 0.0.6-2、whitespace 0.3-2、unlambda 2.0.0-5。