Re: 小日本太变态了:11门语言的quine接力

已查看 3 次
跳至第一个未读帖子

Zoom.Quiet

未读,
2009年10月7日 00:55:052009/10/7
收件人 nkeric...@googlegroups.com、Python.cn@google、zeuux-universe、ECUG~erlang中文用户组
2009/10/7 王孝 <wangx...@gmail.com>:
> 真恐怖! 楼主验证过了吗?
>

没法检验哪,哪儿有那么多环境哪,,,
果然只有宅男才可能整出来>...

> 2009/10/7 Haibin <lee.b...@gmail.com>
>>
>>
>>
>>
>> Sent to you by Haibin via Google Reader:
>>
>>
>>
>>
>> 小日本太变态了:11门语言的quine接力
>>
>> via est's blog by electronixtar on 9/28/09
>>
>> A Neighborhood of Infinity当年的牛逼之作A Third Order Quine in Three
>> Languages可以说已经是惊为天人了。什么东西呢?
>> q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [','] ++ show c
>> ++ [','] ++ show a ++ [')']
>> main=q "q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [','] ++
>> show c ++ [','] ++ show a ++ [')']" "def q(a,b,c):print
>> b+chr(10)+'q('+repr(b)+','+repr(c)+','+repr(a)+')'" "def e(x) return
>> 34.chr+x+34.chr end;def q(a,b,c) print b+10.chr+'main=q '+e(b)+' '+e(c)+'
>> '+e(a)+' '+10.chr end"
>>
>>
>> 这是一个Haskell程序源码,运行一下可以得到一个Python程序源码,再运行一下这个Python程序,可以得到一个Ruby程序源码,再运行一下这个Ruby程序可以得到最开始的Haskell程序源码。这就是triple
>> quine
>>
>> 今天在proggit上看到更加变态的:11们语言的quine接力。。。。orz。。。小日本果然变态。。。
>>
>> 原文在:http://d.hatena.ne.jp/ku-ma-me/20090916/p1
>>
>> 代码是:
>> # 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+"\"-- haskell"+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+"\"++concatMap("+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+"\"21002111010120211222211211101000120211021120221102111000110120211202"+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=Nothing;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"
>> 当然自己试的时候需要处理好缩进和换行问题。
>>
>> 是这11门语言的quine:
>>
>> 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
>>
>> 卧槽。。。。HOLYFUCK!
>>
>>
>>
>>
>> Things you can do from here:
>>
>> Subscribe to est's blog using Google Reader
>> Get started using Google Reader to easily keep up with all your favorite
>> sites
>>
>>
>>
>
>
>
> --
> Focus on Your Dreams!           ------王孝
>
> >
>



--
http://zoomquiet.org 人生苦短? Pythonic!
向靠谱,反脑残! Kaopulity,小白退散! [Kaopulity~= Keep all processes usablity!]

头太晕

未读,
2009年10月7日 01:58:412009/10/7
收件人 pyth...@googlegroups.com
用个目前比较流行的字来形容:

烎!!!



2009/10/7 Zoom.Quiet <zoom....@gmail.com>

est

未读,
2009年10月8日 10:09:462009/10/8
收件人 python-cn`CPyUG`华蟒用户组(中文Py用户组)
烎可是正宗的脑残体啊。。。。。

On Oct 7, 1:58 pm, 头太晕 <torr...@gmail.com> wrote:
> 用个目前比较流行的字来形容:
>
> 烎!!!
>
> 2009/10/7 Zoom.Quiet <zoom.qu...@gmail.com>
>
>
>
>
>
> > 2009/10/7 王孝 <wangxia...@gmail.com>:
> > > 真恐怖! 楼主验证过了吗?
>
> > 没法检验哪,哪儿有那么多环境哪,,,
> > 果然只有宅男才可能整出来>...
>
> > > 2009/10/7 Haibin <lee.bot...@gmail.com>
>
> > >> Sent to you by Haibin via Google Reader:
>
> > >> 小日本太变态了:11门语言的quine接力
>
> > >> via est's blog by electronixtar on 9/28/09
>
> > >> A Neighborhood of Infinity当年的牛逼之作A Third Order Quine in Three
> > >> Languages可以说已经是惊为天人了。什么东西呢?
> > >> q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [','] ++ show c
> > >> ++ [','] ++ show a ++ [')']
> > >> main=q "q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [',']
> > ++
> > >> show c ++ [','] ++ show a ++ [')']" "def q(a,b,c):print
> > >> b+chr(10)+'q('+repr(b)+','+repr(c)+','+repr(a)+')'" "def e(x) return
> > >> 34.chr+x+34.chr end;def q(a,b,c) print b+10.chr+'main=q '+e(b)+'
> > '+e(c)+'
> > >> '+e(a)+' '+10.chr end"
>
> > 这是一个Haskell程序源码,运行一下可以得到一个Python程序源码,再运行一下这个Python程序,可以得到一个Ruby程序源码,再运行一下这个 Ruby程序可以得到最开始的Haskell程序源码。这就是triple
> > >> quine
>
> > >> 今天在proggit上看到更加变态的:11们语言的quine接力。。。。orz。。。小日本果然变态。。。
>
> > >> 原文在:http://d.hatena.ne.jp/ku-ma-me/20090916/p1
>
> > >> 代码是:
> > >> # 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+"\"-- haskell"+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+"\"++concatMap(" +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+"\"210021110101202112222112111010001 20211021120221102111000110120211202"+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};i nt
>
> > 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
> >http://zoomquiet.org人生苦短? Pythonic!

Lee Macdef

未读,
2009年10月9日 23:33:532009/10/9
收件人 pyth...@googlegroups.com
不明白是啥意思。

2009/10/8, est <electr...@gmail.com>:

smallfish

未读,
2009年10月9日 23:35:452009/10/9
收件人 pyth...@googlegroups.com
这个字真囧。。。

--
如果不能改变结果 那就完善过程
http://hi.baidu.com/smallfish_xy
http://blog.csdn.net/smallfish_xy


2009/10/8 est <electr...@gmail.com>

zhaoweikid

未读,
2009年10月9日 23:46:232009/10/9
收件人 pyth...@googlegroups.com
这个字怎么输入的?不认识。

2009/10/7 头太晕 <tor...@gmail.com>

eric

未读,
2009年10月10日 00:50:362009/10/10
收件人 pyth...@googlegroups.com
烎 yin

2009/10/10 zhaoweikid <pyth...@gmail.com>

头太晕

未读,
2009年10月10日 02:35:532009/10/10
收件人 pyth...@googlegroups.com


2009/10/10 eric <yanbo...@gmail.com>
烎 yin

SCIM的五笔就能打出来.

yuting cui

未读,
2009年10月12日 16:10:442009/10/12
收件人 pyth...@googlegroups.com
2009/10/7 Zoom.Quiet <zoom....@gmail.com>:
>
>>> 小日本太变态了:11门语言的quine接力
这有啥难的,有了那3个的做例子,不过就是炫耀一下自己用11门语言写hello world而已

--
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
G! d- s:->: a- C++(++++)$
UL++++ P L++(++++) E(++)
W+(+++) N+ o? K? w++(+++)
!O !M V? PS PE Y+ PGP !t
!5 !X R !tv b++ DI+ D+
G e* h+ r* y?
------END GEEK CODE BLOCK------

pan shizhu

未读,
2009年10月12日 21:20:122009/10/12
收件人 pyth...@googlegroups.com
你写个出来试试看。其实就算写两个的都得费心思的。

关键点是:最后一个程序运行输出的是原来第一个的程序源代码,所以这种输出会无限循环下去。如果不求这个循环,做起来实际很简单。

2009/10/13 yuting cui <yuti...@gmail.com>:

yuting cui

未读,
2009年10月13日 02:09:262009/10/13
收件人 pyth...@googlegroups.com
笑死...
就是把这个程序用所有语言实现一遍而已
def print_code(a,b,c,....):print
b+chr(10)+'q('+repr(b)+','+repr(c)+','+...+repr(a)+')'
#假设下一个语言是Ruby
q("def print_code(a,b,c,....):print
b+chr(10)+'q('+repr(b)+','+repr(c)+','+...+repr(a)+')'
“,"语言b生成c的代码",”语言c生成d的代码",...,"语言n生成a的代码")
原理主要就是保证收到的字符串输出成下一个语言也能原样识别的格式。
这东东和
def hello(s):print "Hello %s!" % s

hello("World")
有啥区别?

2009/10/13 pan shizhu <pan.s...@gmail.com>:

--

wwwjfy

未读,
2009年10月13日 02:33:552009/10/13
收件人 pyth...@googlegroups.com
先看看清楚吧,生成的最后的a的代码是最初的代码,不是a语言格式而已...

2009/10/13 yuting cui <yuti...@gmail.com>



--
wwwjfy

est

未读,
2009年10月14日 01:12:122009/10/14
收件人 python-cn`CPyUG`华蟒用户组(中文Py用户组)
你先写个python代码,自己生成自己看看?再试试brainfuck。


On Oct 13, 2:09 pm, yuting cui <yuting...@gmail.com> wrote:
> 笑死...
> 就是把这个程序用所有语言实现一遍而已
> def print_code(a,b,c,....):print
> b+chr(10)+'q('+repr(b)+','+repr(c)+','+...+repr(a)+')'
> #假设下一个语言是Ruby
> q("def print_code(a,b,c,....):print
> b+chr(10)+'q('+repr(b)+','+repr(c)+','+...+repr(a)+')'
> ","语言b生成c的代码","语言c生成d的代码",...,"语言n生成a的代码")
> 原理主要就是保证收到的字符串输出成下一个语言也能原样识别的格式。
> 这东东和
> def hello(s):print "Hello %s!" % s
>
> hello("World")
> 有啥区别?
>

> 2009/10/13 pan shizhu <pan.shi...@gmail.com>:


>
> > 你写个出来试试看。其实就算写两个的都得费心思的。
>
> > 关键点是:最后一个程序运行输出的是原来第一个的程序源代码,所以这种输出会无限循环下去。如果不求这个循环,做起来实际很简单。
>

> > 2009/10/13 yuting cui <yuting...@gmail.com>:
> >> 2009/10/7 Zoom.Quiet <zoom.qu...@gmail.com>:

yuting cui

未读,
2009年10月14日 03:41:112009/10/14
收件人 pyth...@googlegroups.com
2009/10/14 est <electr...@gmail.com>:
> 你先写个python代码,自己生成自己看看?再试试brainfuck。
>
def f(a):print a+chr(10)+'f('+repr(a)+')'
f("def f(a):print a+chr(10)+'f('+repr(a)+')'")

高中就玩过的东东

yuting cui

未读,
2009年10月14日 03:42:352009/10/14
收件人 pyth...@googlegroups.com
2009/10/14 yuting cui <yuti...@gmail.com>:
> 高中就玩过的东东
当然当时不是用python

est

未读,
2009年10月14日 05:18:422009/10/14
收件人 python-cn`CPyUG`华蟒用户组(中文Py用户组)
good boy. Now try writespace and brainfuck double quine


On Oct 14, 3:42 pm, yuting cui <yuting...@gmail.com> wrote:
> 2009/10/14 yuting cui <yuting...@gmail.com>:> 高中就玩过的东东

yuting cui

未读,
2009年10月14日 05:39:332009/10/14
收件人 pyth...@googlegroups.com
2009/10/14 est <electr...@gmail.com>:

>
> good boy. Now try writespace and brainfuck double quine
>
>
我算看出来了,你最后就是想让我写个256的:)

est

未读,
2009年10月14日 09:35:132009/10/14
收件人 python-cn`CPyUG`华蟒用户组(中文Py用户组)
所以说小日本很变态嘛。。。。11门语言。。

On Oct 14, 5:39 pm, yuting cui <yuting...@gmail.com> wrote:
> 2009/10/14 est <electronix...@gmail.com>:

pan shizhu

未读,
2009年10月14日 21:31:002009/10/14
收件人 pyth...@googlegroups.com
你还是不能回答原先的问题:多几个语言试试看?
a语言b语言c语言d语言。
这里的关键不在于 d 语言可以编译,而在于 d 语言包含有以前 abcd语言的全部信息,能够再次生成与当初一模一样的 a 语言源代码。

只是需要你承认,这东东并不是象 hello world
一样简单,如果你不承认,马上把三种语言的写出来吧!我看你第三种语言能否输出和当初地一种语言一模一样的原代码。要知道在座的任何一个人用三种语言写
hello world 都没有任何难度的。

或者如果你自认写不出三种语言的,就写两种语言的,只要第二种语言能够生成第一种语言原先一模一样的源代码。然后自己说说,写这两种语言的版本花了多少时间。——大家写两种语言的hello
world 不会超过两分钟吧?计时开始。

2009/10/14 yuting cui <yuti...@gmail.com>:

Terry

未读,
2009年10月21日 06:31:002009/10/21
收件人 pyth...@googlegroups.com
赞同pan shizhu的观点.
难点在于循环....

2009/10/15 pan shizhu <pan.s...@gmail.com>:


> 你还是不能回答原先的问题:多几个语言试试看?
> a语言b语言c语言d语言。
> 这里的关键不在于 d 语言可以编译,而在于 d 语言包含有以前 abcd语言的全部信息,能够再次生成与当初一模一样的 a 语言源代码。
>
> 只是需要你承认,这东东并不是象 hello world
> 一样简单,如果你不承认,马上把三种语言的写出来吧!我看你第三种语言能否输出和当初地一种语言一模一样的原代码。要知道在座的任何一个人用三种语言写
> hello world 都没有任何难度的。
>

> 或者如果你自认写不出三种语言的,就写两种语言的,只要第二种语言能够生成第一种语言原先一模一样的源代码。然后自己说说,写这两种语言的版本花了多少时间。----大家写两种语言的hello

回复全部
回复作者
转发
0 个新帖子