_ 仕事納めの日には仕事なんかしないであそぶ。なんとなく、フラクタルなお絵描き。マンデルブロ集合。あえて golf 的にコード圧縮。
_ awk 版(mawk or gawk)。140バイト。
lua 版。167バイト。> cat mandelbrot.awk BEGIN{print"P2",w=j=512,w,256;for(;j;--j)for(i=0;i++<w;){for(p=q=n=0;n++<256&&p^2+q^2<4;p=k){k=p^2-q^2+x+i*l/w;q=2*p*q+y+j*l/w}print 257-n}} > awk -v x=-2 -v y=-1.5 -v l=3 -f mandelbrot.awk> cat mandelbrot.lua w=512 print("P2",w,w,256)for j=w,1,-1 do for i=1,w do p,q=0,0 for k=255,0,-1 do p,q,n=p^2-q^2+x+i*l/w,2*p*q+y+j*l/w,k if p^2+q^2>4 then break end end print(n)end end > lua -e 'x,y=-2,-1.5 l=3' mandelbrot.lua_ 上のように実行した場合、-2-1.5i から (-2+3)+(-1.5+3)i の範囲の複素数平面を256階調グレイスケールで描画する。
_ 標準出力に PGM フォーマットで吐くけど、PGM をまともに扱える画像ビューアはほとんどないと思うので、たとえば ImageMagick の convert とかに食わせて扱いやすい形式にするとよろし。
画像サイズを変更する場合はスクリプトを直接いじるべし。> ... | convert pgm:- hoge.png_ x,y=-.115,.915, l=.02 (-0.115+0.915i - -0.095+0.935i)
x,y=-.708,0.284, l=.045 (-0.708+0.284i - 0.663+0.329i)
_ そんなわけで、たぶん今年最後の日記です。遊びにいくので。どこに行くか決めてないけど。
_ ちうわけで来年もよろしく。