【发布时间】:2014-08-04 16:53:48
【问题描述】:
我是 python 新手,我对它生成分形图像的能力非常感兴趣。我自己写了一些简单的,但我刚刚发现了一个 Mandelbrot 分形的脚本......它以您想要的分辨率产生美丽的全彩色图像......但是代码被混淆成看起来像 Mandelbrot 的 ASCII 艺术....真的很酷,但如果你想轻松阅读它就很傻。它包含我还没有在 python 中学习过的功能,所以如果有人可以缩进脚本看起来像普通的 python 脚本,那就太好了。 脚本:
_ = (
255,
lambda
V ,B,c
:c and Y(V*V+B,B, c
-1)if(abs(V)<6)else
( 2+c-4*abs(V)**-0.4)/i
) ;v, x=7200,4800;C=range(v*x
);import struct;P=struct.pack;M,\
j ='<QIIHHHH',open('M.bmp','wb').write
for X in j('BM'+P(M,v*x*3+26,26,12,v,x,1,24))or C:
i ,Y=_;j(P('BBB',*(lambda T:(T*80+T**9
*i-950*T **99,T*70-880*T**18+701*
T **9 ,T*i**(1-T**45*2)))(sum(
[ Y(0,(A%3/3.+X%v+(X/v+
A/3/3.-x/2)/1j)*2.5
/x -2.7,i)**2 for \
A in C
[:9]])
/9)
) )
正如我所说,艺术很酷,但太难读了!如果有人能做到这一点,我将不胜感激。
【问题讨论】:
-
我建议使用PythonTidy。
-
就算整理好了,这个baby身上的内圈也是用了一个很长的表情。
-
由于混淆的目的是为了混淆和迷惑,因此变量名也很可能没有意义甚至误导。就个人而言,我认为你最好花时间学习计算分形所涉及的数学——这并不难——而不是试图破译这个怪物。
-
是的,我明白了...我认为提交此文件是为了在尽可能少的行中制作 Mandelbrot...我找到了其他人,但我没有看到使用颜色像这样的渐变。任何人都知道任何可以使Mandelbrots与此非常相似的东西吗? @martineau 你知道他用什么方法来获得颜色渐变吗?如果我知道这一点,我可以相当容易地编写实际的数学位
-
颜色似乎是前几次迭代值的函数,直接将颜色编码到 BMP 规范中。我会使用 Matplotlib,只需生成一个包含值的数组,然后让颜色图找出其余部分。
标签: python obfuscation fractals deobfuscation