谁说使用Python你就写不出混乱的代码?
2011-09-13 12:06
429 查看
_ =\
"""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')
""" ))
本文是从 Penrose
Tiling in Obfuscated Python 这篇文章翻译而来。
谁说使用Python你就写不出混乱的代码?
下面这段Python代码是用来生成一些彭罗斯铺砖图案的。不错,这是段可运行的Python代码:
当这段代码运行时,它会产生一个1000×1000的png格式的彭罗斯铺砖图案,里面包含有大概2212个具有3D浮雕效果的彭罗斯铺砖图。下图是这个图片的一部分:
这个脚本需要Pycairo代码库。它只能运行在Python
<= 2.7 版本上;Phthon 3并不支持。最初它是一个很正常的脚本,但经过我的努力,出现了神奇的视觉效果。
彭罗斯铺砖法是个很神奇的东西,它的图案呈不规则周期状分布——你移动角度后都找不到再次重合的图案。它由罗杰·彭罗斯(Sir Roger Penrose)经过无数次的五边形铺拼试验而成。
相对于C和Perl,Python很少被认为是一种容易产生混乱的代码的语言。似乎从来没有人挑战过这种观点,网上也很少找到混乱的Python代码的例子:你可以在Phthon官方问答区里和像这里 和 这里 的一些页面中发现一些。这还有一个在PyCon
2011大会上的谈话。
我相信这是第一个能输出高分辨率图片的混乱的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')
""" ))
本文是从 Penrose
Tiling in Obfuscated Python 这篇文章翻译而来。
谁说使用Python你就写不出混乱的代码?
下面这段Python代码是用来生成一些彭罗斯铺砖图案的。不错,这是段可运行的Python代码:
当这段代码运行时,它会产生一个1000×1000的png格式的彭罗斯铺砖图案,里面包含有大概2212个具有3D浮雕效果的彭罗斯铺砖图。下图是这个图片的一部分:
这个脚本需要Pycairo代码库。它只能运行在Python
<= 2.7 版本上;Phthon 3并不支持。最初它是一个很正常的脚本,但经过我的努力,出现了神奇的视觉效果。
彭罗斯铺砖法是个很神奇的东西,它的图案呈不规则周期状分布——你移动角度后都找不到再次重合的图案。它由罗杰·彭罗斯(Sir Roger Penrose)经过无数次的五边形铺拼试验而成。
相对于C和Perl,Python很少被认为是一种容易产生混乱的代码的语言。似乎从来没有人挑战过这种观点,网上也很少找到混乱的Python代码的例子:你可以在Phthon官方问答区里和像这里 和 这里 的一些页面中发现一些。这还有一个在PyCon
2011大会上的谈话。
我相信这是第一个能输出高分辨率图片的混乱的Python代码。如果你还知道一些其它的,请在评论中分享出来!
相关文章推荐
- 谁说使用Python你就写不出混乱的代码?
- 谁说使用Python你就写不出混乱的代码?
- python3.3使用tkinter实现猜数字游戏代码
- python itchat 使用记录(代码帖)
- 简单使用scipy.weave混合使用Python和C++代码的简单例子
- 使用python做你自己的自动化测试--对Java代码做单元测试 (2)-导入第三方jar包裹
- 使用vim 编辑Python代码
- 黑客走开系列1:Python使用元组做函数实参让代码更安全!
- [代码笔记] python 之网络编程: 使用udp 发送音频文件
- 使用PDB(The Python Debugger)命令行调试Python代码
- C Java PHP Perl Python 的程序代码美化工具(Pretty Print Program/Source Code Beautifier)使用
- Python使用迭代器打印螺旋矩阵的思路及代码示例
- python 提取主域名和子域名代码——先根据规则提取,如果有问题,则使用tldextract
- python代码`if not x:` 和`if x is not None:`和`if not x is None:`使用
- 使用swig从c/c++代码生成java/python/R/php...代码
- python中使用urllib2获取http请求状态码的代码例子
- 使用SonarQube+Eclipse来分析python代码
- 使用cython保护python的代码
- 使用Python的urllib2和pyquery 提取深圳市太平洋影城的影讯(二)——Python代码编写
- linux下使用RE和python统计代码的总行数