
Hace tiempo mostraba en un post un programa en Python que era tanto arte ASCII como generador de la misma forma que su código mostraba1. Un programa para Python v2.7 que en mi vieja Mac toma 5 minutos de procesamiento para generar un archivo bitmap (de nombre M.bmp) con la imagen mostrada al lado.
El código (mostrado a continuación) ya no funciona con versiones más modernas de Python, como es el caso de la versión 3.12, con la que lo probé recientemente. Considerando la naturaleza estructural de Python, es una maravilla la forma en que el código es presentado y que funcione.
_ = (
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=1500,1000;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)
) )
Actualizarlo no fue una tarea sencilla, pues primero debe uno desofuscarlo, luego actualizarlo (que fue una tarea interesante al ver las cosas que han cambiando en Python desde entonces) y luego ofuscarlo en «forma fractal». Esta última parte ha sido la «más latosa». Mi mejor intento hasta el momento es el que incluyo a continuación.
_ = (
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=1500,1000;C=range(v*x
);import struct;P=struct.pack;M,\
j ='<QIIHHHH',open('M.bmp','wb').write
for X in set(C).union({j(b'BM'+P(M,v*x*3+26,26,12,v,x,1,24))}):
i ,Y=_;T=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;color=(int(T*80
+ T**9*i-950*T**99),int(
T*70-880*T**18+701*T
** 9),int(T*i**(1 -
T **45*2)));j(P (
'BBB',
*color
) )
A diferencia de su versión original, a la mía le «sobra una colita» en la línea central, que resulta ser la más problemática por la principal característica estructural de Python. Esta versión funciona sin problema con Python v3.12, y estoy viendo si puedo ajustarlo para que quede bien representado el «valle del elefante» (ver mapa inferior y también el post previo para mayor información al respecto).
Referencias
- Jeff Preshing, «High-Resolution Mandelbrot in Obfuscated Python«, Preshing on Programming, blog, publish: 2011.09.26, consulted: 2015.01.28. URL: http://preshing.com/20110926/high-resolution-mandelbrot-in-obfuscated-python/.
- Xander Henderson, «Rhapsody in Numbers«, yozh.org, web. Published: 2010.10.29; visited: 2024.10.01. URL: https://yozh.org/2010/10/29/mset002/.
- «The Mandelbrot Set & Fractals«, blog. Visited: 2024.10.01. URL: https://themancave-rayc.blogspot.com/2011/12/mandelbrot-set-fractals.html
- Samrat Dutta, «A Single Equation that Rules the World«, medium.com, web. Published: 2021.01.26; visited: 2024.10.01. URL: https://medium.com/the-wisest-friends/a-single-equation-that-rules-the-world-7673d4e5c359.
Siguiente

