Forma y fondo, recursividad y conjuntos de Mandelbrot (4)

Finalmente, el punto al que quería llegar. Forma, fondo y recursividad pueden ser muy distintos pero al mismo tiempo pueden ser lo mismo.

No hace mucho me topé con esta maravilla de código, 21 líneas de Python ofuscado que de inmediato llaman la atención por estar dispuestas en la característica forma de un conjunto de Mandelbrot. ¿Y qué genera? Precisamente valores de conjuntos de Mandelbrot con algo de información visual adicional, es decir fractales.

_                                      =   (
                                        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)
                                       )   )

El programa genera un archivo de nombre M.bmp, en formato Bitmap de Windows, como el siguiente (imagen en formato JPEG debido a restricciones de la plataforma WordPress para subir archivos Bitmap):

Mandelbrot set

Si se cuenta con Python (existen algunas restricciones sobre la versión1) basta copiar el código a un archivo y ejecutarlo con:

$ python <nombre>.py

En mi MBP (13″, Mid-2012, 2.9GHz Intel Core i7, 8GB RAM, OS X 10.9.5, Python 2.7.5) tarda 5 minutos y medio en generar este archivo. Cambios en el tamaño de la imagen son posibles con ciertas restricciones, ver [1] para mayores detalles.

Referencias

  1. 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/.
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s