



I call it the Puff the Magic Dragon curve, because it's first iteration looks like a dragon.
draw_on_left and draw_on_right draw the same curve but in the opposite direction.
def draw_on_left(segment_length, remaining_iterations) :
if remaining_iterations == 0 :
turtle.forward(segment_length)
else :
nsl = segment_length / 5
nri = remaining_iterations - 1
turtle.left(90)
draw_on_right(nsl, nri)
draw_on_right(nsl, nri)
turtle.right(90)
draw_on_left(nsl, nri)
turtle.right(90)
draw_on_left(nsl, nri)
turtle.left(90)
draw_on_right(nsl, nri)
turtle.left(90)
draw_on_right(nsl, nri)
draw_on_left(nsl, nri)
turtle.left(90)
draw_on_right(nsl, nri)
turtle.right(90)
draw_on_left(nsl, nri)
draw_on_left(nsl, nri)
turtle.right(90)
draw_on_right(nsl, nri)
turtle.right(90)
draw_on_left(nsl, nri)
turtle.left(90)
draw_on_right(nsl, nri)
draw_on_left(nsl, nri)
draw_on_left(nsl, nri)
turtle.right(90)
draw_on_right(nsl, nri)
turtle.right(90)
draw_on_left(nsl, nri)
draw_on_right(nsl, nri)
turtle.left(90)
draw_on_right(nsl, nri)
turtle.left(90)
draw_on_left(nsl, nri)
turtle.right(90)
draw_on_left(nsl, nri)
turtle.right(90)
draw_on_right(nsl, nri)
turtle.left(90)
draw_on_right(nsl, nri)
turtle.left(90)
draw_on_left(nsl, nri)
draw_on_left(nsl, nri)
def draw_on_right(segment_length, remaining_iterations) :
if remaining_iterations == 0 :
turtle.forward(segment_length)
else :
nsl = segment_length / 5
nri = remaining_iterations - 1
draw_on_right(nsl, nri)
draw_on_right(nsl, nri)
turtle.right(90)
draw_on_left(nsl, nri)
turtle.right(90)
draw_on_left(nsl, nri)
turtle.left(90)
draw_on_right(nsl, nri)
turtle.left(90)
draw_on_right(nsl, nri)
turtle.right(90)
draw_on_left(nsl, nri)
turtle.right(90)
draw_on_left(nsl, nri)
draw_on_right(nsl, nri)
turtle.left(90)
draw_on_left(nsl, nri)
turtle.left(90)
draw_on_right(nsl, nri)
draw_on_right(nsl, nri)
draw_on_left(nsl, nri)
turtle.right(90)
draw_on_right(nsl, nri)
turtle.left(90)
draw_on_left(nsl, nri)
turtle.left(90)
draw_on_right(nsl, nri)
draw_on_right(nsl, nri)
turtle.left(90)
draw_on_left(nsl, nri)
turtle.right(90)
draw_on_right(nsl, nri)
draw_on_left(nsl, nri)
turtle.right(90)
draw_on_left(nsl, nri)
turtle.right(90)
draw_on_right(nsl, nri)
turtle.left(90)
draw_on_right(nsl, nri)
turtle.left(90)
draw_on_left(nsl, nri)
draw_on_left(nsl, nri)
turtle.right(90)
by Bram Cohen May 2000