This project demonstrates an interesting technique for
generating a Mandelbrot fractal design as well as providing
a nice example of hill climbing. A number of fractal
generation turtles do a random walk across a complex plane, 
computing one additional iteration of Z^2 + R each
time they cross a patch. A count is maintained of the
number of iterations computed at each patch before the
complex number at that patch reaches a maximum  This
count is then translated into a color, giving the
Mandelbrot set it's distinctive look.

An interesting way to view the emerging set is that you
are looking straight down on one of the Hawaian Islands.
The center is extremely high (infinitely so, in fact),
simply because no amount of iterations at these points will
cause the associated complex number to reach a
pre-determined maximum. The edges of the set are
steeply sloped, and the "sea" around the set is very

Click on SETUP to create NUMBER fractal generation turtles,
place them in the middle of the screen (at complex
coordinate (0,0), and scale the 101,101 screen to
approx -1 to 1 on both the real and complex planes.

To start the calculation, start the slider THROW at 0,
press the GO button. Note that the system seems to stall,
with each turtle "stuck" on a local maximum hill.  

Changing THROW to 7 will "throw" each turtle a distance of 7
each time they reach the top of a hill, essentially giving
them a second chance to climb an even greater hill.
The classic Mandelbrot shape will begin to appear fairly

Notice that the "aura" around the Mandelbrot set begins
to appear first, then the details along the edges become
more and more crisply defined.  Finally, the center fills
out and slowly changes to black.

Notice how different values for THROW change the speed and
precision of the project. Also, try running 'Mandelbrot'
with different values for NUMBER.

It's fairly easy to hack at the Starlogo code to change
the scale factor- it's set as the global variable 'factor'.
You might also think about adjusting the viewport in the
plane, to allow for a larger picture (although the smaller
sized picture might look better and emerge quicker.)

You might also play with the colors to experiment with
different visual effects.

Notice also what happens when you turn off climbing and/or

Try to produce some of the other complex sets- the Julia set
for instance. There are many other 'fractals' commonly known
today. Just about any book on them will have several nice
pictures you can try to duplicate.

To accomplish the hill climbing I use CURRENTCOUNT
and NEXTCOUNT turtle variables, comparing them to one
another to establish a gradient to guide turtle movement.
The goal of each turtle is to move up the emerging gradient,
"booting itself up" to the ever growing center of the set.

Note that there is no complex arithmetic in Starlogo,
so the basic operations needed to be provided as Starlogo
routines at the beginning of the code. These complex
arithmetic routines are also used in other fractal
calculations and can be tailored to your own explorations.