I am LAZY bones ? all linux

神一样的Quine

有个很牛B的小日本搞出来的东西

# ruby
l=92.chr;eval s="s=s.dump[r=1..-2].gsub(/("+l*4+"){4,}(?!\")/){|t|'\"+l*%d+\"'%(t
.size/2)};5.times{s=s.dump[r]};puts\"# python\\nprint(\\\"# perl\\\\nprint(\\\\\\
\"# lua"+l*4+"nprint("+l*7+"\"(* ocaml *)"+l*8+"nprint_endline"+l*15+"\"-- haskel
l"+l*16+"nimport Data.List;import Data.Bits;import Data.Char;main=putStrLn("+l*31
+"\"/* C */"+l*32+"n#include<stdio.h>"+l*32+"nint main(void){char*s[501]={"+l*31+
"\"++intercalate"+l*31+"\","+l*31+"\"(c(tail(init(show("+l*31+"\"/* Java */"+l*32
+"npublic class QuineRelay{public static void main(String[]a){String[]s={"+l*31+"
\"++intercalate"+l*31+"\","+l*31+"\"(c("+l*31+"\"brainfuck"+l*64+"n++++++++[>++++
<-]+++++++++>>++++++++++"+l*31+"\"++(concat(snd(mapAccumL h 2("+l*31+"\"110"+l*31
+"\"++g(length s)++"+l*31+"\"22111211100111112021111102011112120012"+l*31+"\"++co
ncatMap("+l*32+"c->let d=ord c in if d<11then"+l*31+"\"21002"+l*31+"\"else"+l*31+
"\"111"+l*31+"\"++g d++"+l*31+"\"22102"+l*31+"\")s++"+l*31+"\"2100211101012021122
2211211101000120211021120221102111000110120211202"+l*31+"\"))))))++"+l*31+"\","+l
*63+"\""+l*64+"n"+l*63+"\"};int i=0;for(;i<94;i++)System.out.print(s[i]);}}"+l*31
+"\")))))++"+l*31+"\",0};int i=0;for(;s[i];i++)printf("+l*63+"\"%s"+l*63+"\",s[i]
);puts("+l*63+"\""+l*63+"\");return 0;}"+l*31+"\");c s=map("+l*32+"s->"+l*31+"\""
+l*63+"\""+l*31+"\"++s++"+l*31+"\""+l*63+"\""+l*31+"\")(unfoldr t s);t[]=Nothing;
t s=Just(splitAt(if length s>w&&s!!w=='"+l*31+"\"'then 501else w)s);w=500;f 0=Not
hing;f x=Just((if x`mod`2>0then '0'else '1'),x`div`2);g x= reverse (unfoldr f x);
h p c=let d=ord c-48in(d,replicate(abs(p-d))(if d<p then '<'else '>')++"+l*31+"\"
."+l*31+"\");s="+l*31+"\"# ruby"+l*32+"n"+l*31+"\"++"+l*31+"\"l=92.chr;eval s=\"+
(z=l*31)+\"\\\"\"+s+z+\"\\\""+l*31+"\"++"+l*31+"\""+l*32+"n"+l*31+"\""+l*15+"\""+
l*7+"\")"+l*4+"n\\\\\\\")\\\")\"########### (c) Yusuke Endoh, 2009 ###########\n"

这段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。
est这里看到了介绍,实在忍不住,把所有解释器都装上验证了一把,果然是可以的。彻底无语了,特此把中间结果都打包放上来,供大家瞻仰。
ubuntu下也想自己试试的话,得确保有这些包: ruby lunar lua50 ocaml-interp ghc6 sun-java5-jdk beef whitespace unlambda

PS: 我以为 brainfuck 就已经很BT了,没想到还有更BT的 whitespace ,彻底无语了。

最后修改时间: 2009年09月30日 13:55

本文章发表于: 2009年09月29日 17:54 | 所属分类:编程相关. | 您可以在此订阅本文章的所有评论. | 您也可以发表评论, 或从您的网站trackback.

13 个评论 关于: “神一样的Quine”

  1. BackFIre 在 2009年09月29日 18:12 说:回复

    omg~~~!

  2. Shan 在 2009年09月29日 18:49 说:回复

    仰望中。

  3. Louis Han 在 2009年09月29日 20:11 说:回复

    高山仰止啊 NB人!

  4. kurrunk 在 2009年09月29日 20:26 说:回复

    无语了……

  5. 與骨頭在Screen上聊天 | I'm TualatriX 在 2009年09月29日 22:33 说:回复

    […] 聊天的内容是:神一样的Quine […]

  6. gza633 在 2009年09月29日 22:45 说:回复

    从gcc到JAVA的那一段我能看懂 ruby没学过 python不精通 perl写个数据库的脚本时才用

    其他的实在……看不懂

  7. 文雨 在 2009年09月29日 23:24 说:回复

    太神奇了,好多种都没听过

  8. HicroKee 在 2009年09月30日 12:06 说:回复

    我在CPyUG里看过另一个版本,不过不是生成lua而是haskell,只有三种语言。
    看来这个更牛B,我可没这么强悍的环境去运行这个~

  9. zer4tul 在 2009年09月30日 12:10 说:回复

    .ws果然x如其扩展名……很ws

  10. zach 在 2009年09月30日 12:26 说:回复

    不知是不是骨头的RSS输出有点问题,有些文章能全文输出,更多的是只有个标题?

  11. kk 在 2009年10月05日 21:01 说:回复

    神啊,牛啊

  12. shwg 在 2009年10月07日 08:36 说:回复

    我上这位老兄的blog看了一下,更震撼的是他周末的过法。
    他沿着铁路沿线步行,一天走40公里,关东的路线已经走了一半多。
    我前些日子走了一次10公里,4个小时,腿就已经麻了。

发表评论