谁说使用Python你就写不出混乱的代码?

老枪
 老枪
发布于 2011年09月12日
收藏 21

本文是从 Penrose Tiling in Obfuscated Python 这篇文章翻译而来。


谁说使用Python你就写不出混乱的代码?

下面这段Python代码是用来生成一些彭罗斯铺砖图案的。不错,这是段可运行的Python代码:

_                                 =\
                                """if!
                              1:"e,V=100
                            0,(0j-1)**-.2;
                           v,S=.5/  V.real,
                         [(0,0,4      *e,4*e*
                       V)];w=1          -v"def!
                      E(T,A,              B,C):P
                  ,Q,R=B*w+                A*v,B*w+C
            *v,A*w+B*v;retur              n[(1,Q,C,A),(1,P
     ,Q,B),(0,Q,P,A)]*T+[(0,C            ,R,B),(1,R,C,A)]*(1-T)"f
or!i!in!_[:11]:S       =sum([E          (*x)for       !x!in!S],[])"imp
  ort!cair               o!as!O;      s=O.Ima               geSurfac
   e(1,e,e)               ;c=O.Con  text(s);               M,L,G=c.
     move_to                ,c.line_to,c.s                et_sour
       ce_rgb                a"def!z(f,a)                :f(-a.
        imag,a.       real-e-e)"for!T,A,B,C!in[i       !for!i!
          in!S!if!i[""";exec(reduce(lambda x,i:x.replace(chr
           (i),"\n "[34-i:]),   range(   35),_+"""0]]:z(M,A
             );z(L,B);z         (L,C);         c.close_pa
             th()"G             (.4,.3             ,1);c.
             paint(             );G(.7             ,.7,1)
             ;c.fil             l()"fo             r!i!in
             !range             (9):"!             g=1-i/
             8;d=i/          4*g;G(d,d,d,          1-g*.8
             )"!def     !y(f,a):z(f,a+(1+2j)*(     1j**(i
             /2.))*g)"!for!T,A,B,C!in!S:y(M,C);y(L,A);y(M
             ,A);y(L,B)"!c.st            roke()"s.write_t
             o_png('pen                        rose.png')
             """                                       ))

当这段代码运行时,它会产生一个1000×1000的png格式的彭罗斯铺砖图案,里面包含有大概2212个具有3D浮雕效果的彭罗斯铺砖图。下图是这个图片的一部分:

彭罗斯铺砖图

这个脚本需要Pycairo代码库。它只能运行在Python <= 2.7 版本上;Phthon 3并不支持。最初它是一个很正常的脚本,但经过我的努力,出现了神奇的视觉效果。

彭罗斯铺砖法是个很神奇的东西,它的图案呈不规则周期状分布——你移动角度后都找不到再次重合的图案。它由罗杰·彭罗斯(Sir Roger Penrose)经过无数次的五边形铺拼试验而成。

相对于C和Perl,Python很少被认为是一种容易产生混乱的代码的语言。似乎从来没有人挑战过这种观点,网上也很少找到混乱的Python代码的例子:你可以在Phthon官方问答区里和像这里这里 的一些页面中发现一些。这还有一个在PyCon 2011大会上的谈话

我相信这是第一个能输出高分辨率图片的混乱的Python代码。如果你还知道一些其它的,请在评论中分享出来!


本文来自外刊IT评论网(www.aqee.net),原始地址:谁说使用Python你就写不出混乱的代码?

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:谁说使用Python你就写不出混乱的代码?
加载中

最新评论(14

asdfsx
asdfsx
靠......谁写的啊
linxux
linxux
看得蛋疼……
H丶World
H丶World
【图案呈不规则周期状分布——你移动角度后都找不到再次重合的图案。】——不知道这句话怎么得来的,就新闻里这个局部的图,就有3出图案是一样的!
ifsc01
ifsc01
强大
Liuxd
Liuxd
这是有多蛋疼啊。
Lwxxx
Lwxxx
介个,好强大……
一刀
一刀
NB挺挺啊。。。
听说有个程序混乱代码大赛,我看过最乱的C程序,把哥雷到了~~~~
Lunar_Lin
Lunar_Lin
彭罗斯 真牛啊.这图案很有意思.
ddatsh
ddatsh

引用来自“霸气千秋”的评论

这是一个让人蛋疼的python

+1
返回顶部
顶部