-- Haskell 98 -- The MathematicalOrchid, 24 Feb 2007 import Data.Complex quadratic c z = z*z + c critical_orbit z = iterate (quadratic z) 0 pixel = length . takeWhile (\z -> magnitude z <= 2) . take max_iter side n v0 v1 = let sv = (v1 - v0) / fromIntegral n in [v0, (v0 + sv) .. v1] grid = map (\y -> map (:+ y) side_x) side_y image = map (map (to_ascii . pixel . critical_orbit)) grid main = mapM_ putStrLn image side_x = side 64 (-2) 2 side_y = side 32 (-2) 2 max_iter = 16 to_ascii n = " .,:;|!([$O0*%#@" !! (n-1)
. ....................... ............................... ..................................... ........................................... ............................................... .........,,,,,,,,,,,,,,,......................... ......,,,,,,,,,,,,,:::;|;:::,,,...................... ....,,,,,,,,,,,,,::::;;|(*@@::::,,,.................... ..,,,,,,,,,,,,,::::::;;|*O@@[|;;:::,,,,.................. ..,,,,,,,,,,,,:::::;|||!(@@@@@(!|;;::,,,,.................. .,,,,,,,,,,,::::;;;|[@@0@@@@@@@@@$@$O;:,,,,,................. ,,,,,,,,,::;;;;;;||[0@@@@@@@@@@@@@@@[|;:,,,,,................ ,,,,,:::;;|%(!((!!((@@@@@@@@@@@@@@@@@@@;::,,,,,................ ,:::::;;;|![@@@@@@O*@@@@@@@@@@@@@@@@@@*;::,,,,,................ ::::;||!(OO@@@@@@@@@@@@@@@@@@@@@@@@@@@|;::,,,,,................ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O!|;::,,,,,,................ ::::;||!(OO@@@@@@@@@@@@@@@@@@@@@@@@@@@|;::,,,,,................ ,:::::;;;|![@@@@@@O*@@@@@@@@@@@@@@@@@@*;::,,,,,................ ,,,,,:::;;|%(!((!!((@@@@@@@@@@@@@@@@@@@;::,,,,,................ ,,,,,,,,,::;;;;;;||[0@@@@@@@@@@@@@@@[|;:,,,,,................ .,,,,,,,,,,,::::;;;|[@@0@@@@@@@@@$@$O;:,,,,,................. ..,,,,,,,,,,,,:::::;|||!(@@@@@(!|;;::,,,,.................. ..,,,,,,,,,,,,,::::::;;|*O@@[|;;:::,,,,.................. ....,,,,,,,,,,,,,::::;;|(*@@::::,,,.................... ......,,,,,,,,,,,,,:::;|;:::,,,...................... .........,,,,,,,,,,,,,,,......................... ............................................... ........................................... ..................................... ............................... ....................... .