Mandelbrot set

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Mandelbrot set

Works with PostgreSQL

8.4

Written in

SQL

Depends on

Nothing

This SQL query (requires PostgreSQL 8.4) produces an ASCII-art image of the Mandelbrot set. It is written entirely in SQL:2008-conformant SQL.

```WITH RECURSIVE
x(i)
AS (
VALUES(0)
UNION ALL
SELECT i + 1 FROM x WHERE i < 101
),
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 x) AS xgen(x,ix)
CROSS JOIN
(SELECT -1.5 + 0.031 * i, i FROM x) 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.0
AND I < 27
),
Zt (Ix, Iy, I) AS (
SELECT Ix, Iy, MAX(I) AS I
FROM Z
GROUP BY Iy, Ix
ORDER BY Iy, Ix
)
SELECT array_to_string(
array_agg(
SUBSTRING(
' .,,,-----++++%%%%@@@@#### ',
GREATEST(I,1),
1
)
),''
)
FROM Zt
GROUP BY Iy
ORDER BY Iy;
```

Results

``` .................................................................................... ....................................................................................... ......................................................................................... ........................................................................................... ....................................................,,,,,,,,,................................. ................................................,,,,,,,,,,,,,,,,,,............................. ..............................................,,,,,,,,,,,,,,,,,,,,,,,,.......................... ............................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,........................ ..........................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...................... .........................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.................... ........................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,................... .......................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,................. .......................................,,,,,,,,,,,,,,,,,,,,,,,,--,,,,,,,,,,,,,,,,,,,,................ ......................................,,,,,,,,,,,,,,,,,,,,,,,,,,-+--,,,,,,,,,,,,,,,,,,,............... ....................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,-----,,,,,,,,,,,,,,,,,,,.............. ...................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,--- -----,,,,,,,,,,,,,,,,,............. .................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---++--++,,,,,,,,,,,,,,,,,,............ ................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-----%++---,,,,,,,,,,,,,,,,,............ ..............................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-----+%----,,,,,,,,,,,,,,,,,,........... .............................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----- %%+----,,,,,,,,,,,,,,,,,,.......... ...........................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---%-+% ----,,,,,,,,,,,,,,,,,,,......... ..........................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---+ +##  %+%---,,,,,,,,,,,,,,,,,,......... ........................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-----# # +---,,,,,,,,,,,,,,,,,,........ .......................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-------%  %-----,,,,,,,,,,,,,,,,,........ .....................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------+ ------,,,,,,,,,,,,,,,,,....... ....................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-----------+@ +-----------,,,,,,,,,,,,....... ..................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----@-------++ ++-----------,,,,,,,,,,,,...... .................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--+@% ---+ +@%%@  %%+@+@%------+-,,,,,,,,,,,...... ................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---- # ++%  % @-----++--,,,,,,,,,,,..... ..............,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----+  %  %%++ %+%@-,,,,,,,,,,,..... .............,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-----+# #% ++-,,,,,,,,,,,,.... ............,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,------+ @---,,,,,,,,,,,,.... ..........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-------++% ---,,,,,,,,,,,,.... .........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--------+ +  %+---,,,,,,,,,,,,,... ........,,,,,,,,,,,,,,,,,,,,,--------------------@ +----,,,,,,,,,,,,... .......,,,,,,,,,,,,,,,,,,,,,,- +-----------------+ ----,,,,,,,,,,,,... .......,,,,,,,,,,,,,,,,,,,,,--++------+---------+% +++--,,,,,,,,,,,,.. ......,,,,,,,,,,,,,,,,,,,,,,--%+-----++--------- #+-,,,,,,,,,,,,.. .....,,,,,,,,,,,,,,,,,,,,,,----#%++--+@ -+-----+% --,,,,,,,,,,,,.. .....,,,,,,,,,,,,,,,,,,,,,,-----+## ++@ + +----% +--,,,,,,,,,,,,,.. ....,,,,,,,,,,,,,,,,,,,,,,------+@ @ @@++++# +--,,,,,,,,,,,,,.. ....,,,,,,,,,,,,,,,,,,,,,-------% #++% -,,,,,,,,,,,,,.. ...,,,,,,,,,,,,,,,,,,,,,------++%#  %%@  %-,,,,,,,,,,,,,,. ...,,,,,,,,,,,,,,,,,,,--------+  % +--,,,,,,,,,,,,,,. ...,,,,,,,,,,,,,,,,,,-----+--++@ # --,,,,,,,,,,,,,,. ..,,,,,,,,,,,,,,,,,-------%+++% @--,,,,,,,,,,,,,,,. ..,,,,,,,,,,,-------------+ @#@ ---,,,,,,,,,,,,,,,. ..,,,,,,,,,---@--------@-+% +---,,,,,,,,,,,,,,,. ..,,,,,------- +-++++-+%%% +----,,,,,,,,,,,,,,,. ..,,,,,,------%--------++% +----,,,,,,,,,,,,,,,. ..,,,,,,,,,,--+----------++# ---,,,,,,,,,,,,,,,. ..,,,,,,,,,,,,------------+@@@% +--,,,,,,,,,,,,,,,. ..,,,,,,,,,,,,,,,,,------- +++%  %--,,,,,,,,,,,,,,,. ...,,,,,,,,,,,,,,,,,,---------+@ @ --,,,,,,,,,,,,,,. ...,,,,,,,,,,,,,,,,,,,,------- #  %@ +--,,,,,,,,,,,,,,. ...,,,,,,,,,,,,,,,,,,,,,-------++@  %+  %-,,,,,,,,,,,,,,. ....,,,,,,,,,,,,,,,,,,,,,-------  %++%  %-,,,,,,,,,,,,,.. ....,,,,,,,,,,,,,,,,,,,,,,------+#  %# #@ ++++ +--,,,,,,,,,,,,,.. .....,,,,,,,,,,,,,,,,,,,,,,-----+ %%++% +@+----+ +--,,,,,,,,,,,,,.. .....,,,,,,,,,,,,,,,,,,,,,,,---%+++--+#+--------% #--,,,,,,,,,,,,.. ......,,,,,,,,,,,,,,,,,,,,,,--++-----%%--------- @#--,,,,,,,,,,,,.. .......,,,,,,,,,,,,,,,,,,,,,---------------------+@ +-++,,,,,,,,,,,,... ........,,,,,,,,,,,,,,,,,,,,,--------------------+ ----,,,,,,,,,,,,... .........,,,,,,,,,,,,,,,,,,,,----,,,------------- #+----,,,,,,,,,,,,... ..........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-------+ + +---,,,,,,,,,,,,,... ...........,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--------+%# #---,,,,,,,,,,,,.... ............,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,------+# @ @---,,,,,,,,,,,,.... .............,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-----+# + @--,,,,,,,,,,,,.... ..............,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---+%  %+@  %+-+ +++%-,,,,,,,,,,,..... ................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----% %@++ # % -----++-,,,,,,,,,,,,..... .................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-- ++ ---+ + +%@  %++++++------%-,,,,,,,,,,,...... ...................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---- -------++ +------------,,,,,,,,,,,,...... ....................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-----------+% +--------,,,,,,,,,,,,,,,....... ......................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--------+# -----,,,,,,,,,,,,,,,,,,....... .......................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-------+ #----,,,,,,,,,,,,,,,,,,........ .........................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,----+%  %#---,,,,,,,,,,,,,,,,,,,........ ..........................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---+%+%@  %+%%--,,,,,,,,,,,,,,,,,,......... ............................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---+-+%  %----,,,,,,,,,,,,,,,,,,.......... .............................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-----+%@+---,,,,,,,,,,,,,,,,,,,.......... ...............................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-----+%----,,,,,,,,,,,,,,,,,,........... ................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-----%+ +--,,,,,,,,,,,,,,,,,............ ..................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---++----,,,,,,,,,,,,,,,,,............. ...................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,---@-----,,,,,,,,,,,,,,,,,............. .....................................,,,,,,,,,,,,,,,,,,,,,,,,,,,-----,,,,,,,,,,,,,,,,,,,.............. .....................................,,,,,,,,,,,,,,,,,,,,,,,,,,--%,,,,,,,,,,,,,,,,,,,,............... .......................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,................. ........................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.................. ........................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,................... .........................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.................... ..........................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...................... ............................................,,,,,,,,,,,,,,,,,,,,,,,,,,,,........................ .............................................,,,,,,,,,,,,,,,,,,,,,,,,.......................... ................................................,,,,,,,,,,,,,,,,,............................. .....................................................,,,,.................................... ........................................................................................... ......................................................................................... ...................................................................................... .................................................................................... ................................................................................. .............................................................................. ........................................................................... ........................................................................ ```