Softwire Speed Coding Challenge – Question 2


23 April 2012, by

previous article in series

Welcome to the next in our series on Softwire’s coding challenge! Last time, we discussed the winning answer to the first question. Here’s question 2 for you to try, which may require a bit of mathematical knowledge – I’ll post the winning answer and some further discussion in a week or so.

Write a program to draw part of the Mandelbrot Set. Define:

 \begin{array}{rcl} z_1 & = & z \\ z_{i+1} & = & z_i^2 + z \end{array}

where z is a complex number. Equivalently you can forget about complex numbers and use 2d coordinates:

 \begin{array}{rcl} x_1 & = & x \\ y_1 & = & y \\ x_{i+1} & = & x_i^2 - y_i^2 + x \\ y_{i+1} & = & 2x_i y_i + y \end{array}

For our purposes, points $z$ (or ($x$,$y$)) in the complex plane are said to be in the Mandelbrot set if:

     $$\left| (z_{100}) \right| \leq 2.0$$

or, equivalently:

     $$\sqrt{x_{100}^2 + y_{100}^2} \leq 2.0$$

Your picture should be 800×600 pixels (you may use 200×150 pixels if you are using Ruby or Python).  It should have its left top co-ordinate at (-1.14183, 0.47056) and its right bottom co-ordinate at (-0.60999,-0.06128), and it should draw pixels which are in the Mandlebrot Set as white, and those that are not as black.

Best of luck, don’t forget to comment and let us know how you get on!

next article in series

Tags: , , , ,

Categories: Social, Softwire, Technical

«
»

2 Responses to “Softwire Speed Coding Challenge – Question 2”

  1. configurator says:



    █ ██
    █ █ ██
    █ █████████
    ██ ████████
    █ ███████
    ███████
    ███████
    ████████
    ██ ██████
    ██ ██████
    █ ██
    ██
    ████
    ██████
    █ ███ █████
    ████████
    █████████
    █ █ ███████
    █ █ █████████
    █ ██ █ ████████
    ███████ █████████
    █ ██████ █████████
    ███████████████
    ███████████████
    ██████████████
    ████████████
    █████████████
    █ █████████████
    ████████████████
    ███████████████
    █ ███████████████
    █ █ █ ███████████████
    ██ █████████████████████
    ████ █ ███████████████████
    █ ██████ █ ████████████████████
    █ █ ██████ ████████████████
    █████ ████████ ██████████████████
    █████ █ ███████ █ █ ███ ███████████████████
    ██████ ██ ████ ████ ███ ███ ████ ██████████████████
    ██████ █ █ █████████████████████ █ ██████ █ ████████████████████
    ██████ ████ ██████████████████████████████ █ ████████████████████████
    ███████ █ ██████████████████████████████████ █ ██████████████████████
    ██████ ██████████████████████████████████████ ███ ████████████████████
    █████████████████████████████████████████████████ ███ ████████████████████
    █████████████████████████████████████████████████████ █████████████████████
    ████████████████████████████████████████████████████ ███████████████████████
    ████████████████████████████████████████████████████ █ █ █ ███████████████████████
    ███████████████████████████████████████████████████████ ██ █ ███████████████████████
    ██████████████████████████████████████████████████████████ █████████████████████
    ██████████████████████████████████████████████████████████ ███████████████████████
    ██████████████████████████████████████████████████████████ █ █ ███████████████████████
    ██████████████████████████████████████████████████████████████ ██████████████████████████
    ██████████████████████████████████████████████████████████████ ████████████████████████
    ███████████████████████████████████████████████████████████████ ████████████████████████
    ████████████████████████████████████████████████████████████████ ████████████████████████
    ████████████████████████████████████████████████████████████████ ████████████████████████
    ████████████████████████████████████████████████████████████████ ████████████████████████
    ██████████████████████████████████████████████████████████████████ █████████████████████████
    ██████████████████████████████████████████████████████████████████ █████████████████████████
    ██████████████████████████████████████████████████████████████████ █ █ ████████████████████████
    ████████████████████████████████████████████████████████████████████ ███████████████████████████
    █████████████████████████████████████████████████████████████████████ █████████████████████████
    ██████████████████████████████████████████████████████████████████████ ███████████████████████████
    █████████████████████████████████████████████████████████████████████ █████████████████████████
    █████████████████████████████████████████████████████████████████████ ██████████████████████████
    ███████████████████████████████████████████████████████████████████████ ██████████████████████████
    ███████████████████████████████████████████████████████████████████████ █████████████████████████
    ███████████████████████████████████████████████████████████████████████ ██████████████████████████
    ███████████████████████████████████████████████████████████████████████ ██████████████████████████
    ████████████████████████████████████████████████████████████████████████ ██████████████████████████
    ████████████████████████████████████████████████████████████████████████ ███████████████████████████
    ████████████████████████████████████████████████████████████████████████ ███████████████████████████
    █████████████████████████████████████████████████████████████████████████ ███████████████████████████
    █████████████████████████████████████████████████████████████████████████ ███████████████████████████
    █████████████████████████████████████████████████████████████████████████ ███████████████████████████
    █████████████████████████████████████████████████████████████████████████ ███████████████████████████
    █████████████████████████████████████████████████████████████████████████ ███████████████████████████
    █████████████████████████████████████████████████████████████████████████████████████████████████████
    █████████████████████████████████████████████████████████████████████████████████████████████████████
    █████████████████████████████████████████████████████████████████████████████████████████████████████
    █████████████████████████████████████████████████████████████████████████████████████████████████████
    █████████████████████████████████████████████████████████████████████████████████████████████████████
    █████████████████████████████████████████████████████████████████████████████████████████████████████
    █████████████████████████████████████████████████████████████████████████████████████████████████████
    █████████████████████████████████████████████████████████████████████████████████████████████████████
    █████████████████████████████████████████████████████████████████████████████████████████████████████
    █████████████████████████████████████████████████████████████████████████████████████████████████████
    █████████████████████████████████████████████████████████████████████████████████████████████████████
    █████████████████████████████████████████████████████████████████████████████████████████████████████
    █████████████████████████████████████████████████████████████████████████████████████████████████████
    █████████████████████████████████████████████████████████████████████████████████████████████████████
    █████████████████████████████████████████████████████████████████████████████████████████████████████
    █████████████████████████████████████████████████████████████████████████████████████████████████████
    █████████████████████████████████████████████████████████████████████████████████████████████████████
    █████████████████████████████████████████████████████████████████████████████████████████████████████
    █████████████████████████████████████████████████████████████████████████ ███████████████████████████
    █████████████████████████████████████████████████████████████████████████ ███████████████████████████
    █████████████████████████████████████████████████████████████████████████ ███████████████████████████

  2. configurator says:

    Damn, the comment system ate my ASCII Mandelbrot :(

    The code to do the Mandelbrot check was the following:

    mandel :: Complex Double -> Bool
    mandel p = (realPart $ abs (z 100)) <= 2.0
        where z 1 = p
              z n = (z (n-1))^2 + p
    

Leave a Reply

* Mandatory fields


× seven = 35

Submit Comment