D码点评:3 Obfuscated Python

据说在每一个村委会办公室里,都有一个扫地的老太太. 很偶然地,当她经过一个审计师的身边,扫一眼屏幕上的EXCEL,会低声提醒对方说:小心,现金流量表不平的.

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

本文是从 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代码. 如果你还知道一些其它的,请在评论中分享出来!

所以!

无论多么注重规整的语言,人总是能写出非常奇葩的代码来!

所以,项目中,最不靠谱的就是人,最能靠谱的也只能是人…

9.14 珠海首届 DevFest:

  • 预订问卷: http://f.jeffkit.info/zoomquiet/devfest914zh/
  • 持续一整天的 开发者 节日
  • 多种前沿技术的体验分享
  • 丰富的活动形式
  • 给力的 BBQ 午餐
  • 及时报名,才有席位哪!

巡阅

2013-09-10  

声明: 本文采用 BY-NC-SA 授权。转载请注明转自: #ZHGDG#


以上...


加入 珠海GDG

  1. 注册 Meetup
  2. 关注 Zhuhai GDG
  3. 或扫描: 2meetup

通过 珠海GDG 可以:

    第一时间获知谷歌最新技术,
    可以学到如何去谷歌平台上赚钱的思路和方法,
    可以认识很多有可能将来一起走上自己创业道路的人,
    可以学会把你的创新带向国际市场,
    参加那里的活动有经常和国际上的开发者们进行交流的机会...

PS:

若无意外,题图都是从原文提取或是通过 Google 图片搜索出来的, 版权属左, 不负责任 ;-)

PPS:

珠海GDG 微信/Blog 欢迎投稿,只要追自认内容吻合以下条件:

0. 有趣 ~ 至少是自个儿有兴趣的领域吧...
1. 有料 ~ 至少有点儿原创的东西吧..
2. 有种 ~ 至少不能是成功学吧!

有好物请及时通过邮件列表投稿成也: [email protected]
(发空邮件到 [email protected] 即完成订阅)

微信公号

栏目设定:

    G术图书 (gb:推荐好书,书无中外)
    D码点评 (dd:麻辣评点,善意满盈)
    G说公论 (gt:时评杂文,新旧不拘)
    珠的自白(dm:大妈自述,每周一篇)
    海选文章(hd:得要相信,大妈法眼)

总之, 请大家告诉大家, 珠海生活中的技术社区 都来订阅呗 ;-)

订阅方法

hacker emblem

GDG珠海 社区资源:

大妈的多重宇宙 - YouTube

全新自媒体系列...科学幻想,读书,说故事...

任何问题

随时邮件提问可也:
[email protected]