象と戯れ

 | 

2008-11-20

マンデルブロ集合 by WITH query

19:00 | マンデルブロ集合 by WITH query - 象と戯れ を含むブックマーク はてなブックマーク - マンデルブロ集合 by WITH query - 象と戯れ

ここで答えを載せてよいのかどうかわかりませんが、pgsql-hackersより

WITH RECURSIVE Z(IX, IY, CX, CY, X, Y, I) AS (
               SELECT IX, IY, X::float, Y::float, X::float, Y::float, 0
               FROM (select -2.2 + 0.031 * i, i from generate_series(0,101) as i) as xgen(x,ix),
                    (select -1.5 + 0.031 * i, i from generate_series(0,101) as i) as ygen(y,iy)
               UNION ALL
               SELECT IX, IY, CX, CY, X * X - Y * Y + CX AS X, Y * X * 2 + CY, I + 1
               FROM Z
               WHERE X * X + Y * Y < 16::float
               AND I < 100
         )
   SELECT array_to_string(array_agg(SUBSTRING(' .,,,-----++++%%%%@@@@#### ', LEAST(GREATEST(I,1),27), 1)),'')
   FROM (
         SELECT IX, IY, MAX(I) AS I
         FROM Z
         GROUP BY IY, IX
         ORDER BY IY, IX
        ) AS ZT
   GROUP BY IY
   ORDER BY IY

f:id:umitanuki:20081120190737g:image

How marvelous!

 |