Who says you can’t write obfuscated Python?
Here’s a Python script which renders some Penrose tiling. Yes, this is valid Python code:
_ =\
"""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')
""" ))
When this program runs, it outputs a 1000×1000 image file to penrose.png
, consisting of about 2212 Penrose tiles rendered with a 3D relief effect. Here’s a slice of the image (click to enlarge):
The script requires Pycairo. It only runs on Python <= 2.7; Python 3 is not supported. It started life as a regular Python script, but in my effort to make the code more compact, I got a bit carried away.
Penrose tilings are cool because they cover the entire plane in an aperiodic way — a shifted copy of the image never matches the original. They were invented by Sir Roger Penrose after a series of attempts to tile the plane with pentagonal shapes. For an explanation of the algorithm behind this script, see my next post, Penrose Tiling Explained.
Python never got much credit as an obfuscated programming language, compared to C or Perl. It seems a contest never took place, and there aren’t too many examples of obfuscated Python on the web: You’ll find a few examples in the official Python FAQ and on various pages such as here andhere. There was also a talk at PyCon 2011.
I believe this is the first example of obfuscated Python which outputs a high-resolution image. If you know of any others, let me know in the comments!
- 大小: 217.2 KB
分享到:
相关推荐
在这个特定的案例中,"Python-penrosePenrose贴画的python生成包"是一个利用Python编写的库,专门用于生成Penrose贴画。Penrose贴画是由数学家Roger Penrose提出的非周期性瓷砖图案,它展示了不规则的几何形状如何...
Penrose工具和脚本是为了解决开源项目Penrose在使用和开发过程中遇到的复杂性和学习曲线问题而设计的。Penrose项目是一个高度模块化、功能丰富的软件,它可能涉及图形处理、数学建模或者计算可视化等多个领域。由于...
### Moore-Penrose广义逆矩阵与线性方程组的解 #### 一、引言 广义逆矩阵的概念源自于20世纪初期的数学探索,最初由瑞典数学家弗雷德霍姆在1903年提出,他探讨了一种关于积分算子的广义逆(即所谓的伪逆)。随后,...
在探讨线性代数的高级应用时,投影矩阵与Moore-Penrose逆矩阵是两个经常被提及的关键概念。它们在诸如最小二乘法、奇异值分解等领域扮演着核心的角色。本文将深入探讨这些概念的定义、性质以及它们的应用,为理解...
Penrose 广义逆矩阵是线性代数中一个重要的概念,它扩展了逆矩阵的概念,使其不仅适用于非奇异方阵,还适用于奇异方阵和非方矩阵。这个概念是由英国数学家Roger Penrose提出的,因此被称为Penrose广义逆矩阵,也常被...
极限学习机ELM是一类Single-hidden Layer Feedforward Neural Network(SLFNs)算法,由Huang等基于 Moore-Penrose 广义逆的理论提出,主要针对SLFNs中存在的学习速率慢,迭代时间长,学习参数如学习步长、学习率...
初始化为: from model import PenroseModelfrom starting_states import dart_starfrom view import load_textures , draw_model#Penrose model takes initial set of tiles as the argument. Look at starting_...
广义逆计算: 提供计算矩阵的广义逆的功能,包括Moore-Penrose广义逆、Drazin广义逆等,用于解决矩阵方程组的求解和矩阵的伪逆问题。 实现技术: 编程语言: Python 依赖库: NumPy、SciPy等科学计算库 适用范围: ...
矩阵加权Moore-Penrose逆及加权最小二乘问题的条件数,王淑璠,郑兵,一个问题的解的条件数,是这个问题的解对于该问题数据扰动的敏感性的一个测度, 它是矩阵扰动分析和数值分析中的一个重要课题。�
本篇文章将详细讨论Penrose广义逆,也称为Moore-Penrose伪逆,以及与它相关的不同类型的逆。 首先,我们要理解什么是广义逆。在矩阵理论中,如果一个矩阵不是方阵或者不可逆,那么它通常没有传统的逆矩阵。但是,...
1. **Moore-Penrose逆**:Moore-Penrose逆是线性代数中的一个概念,对于任何矩阵A,如果存在矩阵X满足特定的Penrose方程,那么X被称为A的Moore-Penrose逆,记作A+。它是唯一存在的,并且在矩阵A为满秩时,可以视为...
首先,彭罗斯像素布局是基于非周期性菱形镶嵌(rhombus Penrose tiling)的独特像素设计,它在超分辨率表现上显著优于传统的正方形像素布局。其核心优势在于:1)独特的非周期性排列,避免了传统像素布局中的条纹和...
如果有一个向量空间 \( \mathbb{C}^n \) 的两个子空间 \( L \) 和 \( M \),它们构成直和 \( L \oplus M \),即任何向量 \( x \in \mathbb{C}^n \) 都可以唯一地表示为 \( x = y + z \),其中 \( y \in L \) 且 \( z...
我们提出全息论证来支持AdS Penrose不等式,该不等式推测出视在视线范围内的总质量较低。 这种不平等通常被视为对宇宙审查制度的考验。 我们进一步发现表面视界的面积定律与彭罗斯不等式之间存在联系。 最后,我们...
3. **非线性操作**:散射变换的核心是非线性的摩尔-彭罗斯逆(Moore-Penrose pseudo-inverse)或绝对值操作。这些操作保证了散射系数的稳定性和不变性。 4. **级联与构建散射树**:通过重复上述过程,形成多层散射...
FSC被证明是Penrose的Weyl曲率假说及其引力熵概念的出色模型。 FSC的假设允许在宇宙膨胀开始时的最小熵,并严格定义宇宙的时间箭。 这与通货膨胀模型形成鲜明对比,通货膨胀模型似乎违反了早期宇宙中热力学的第二...