Skip to content

Instantly share code, notes, and snippets.

@drozdziak1
Last active March 3, 2018 23:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save drozdziak1/8e2e03fdaab8786f971b3ebfe780a2d8 to your computer and use it in GitHub Desktop.
Save drozdziak1/8e2e03fdaab8786f971b3ebfe780a2d8 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import turtle
STEP = 5
# This file renders a simple Heighway dragon. Liense: 3-clause BSD
def heighway_reverse(sequence):
rev_sequence = []
for turn in reversed(sequence):
if turn == 'l':
rev_sequence.append('r')
elif turn == 'r':
rev_sequence.append('l')
return rev_sequence
def heighway_extend(sequence=[]):
return sequence + ['r'] + heighway_reverse(sequence)
def draw_from_seq(sequence, step=STEP):
for turn in sequence:
turtle.fd(step)
if turn == 'l':
turtle.left(90)
elif turn == 'r':
turtle.right(90)
turtle.fd(step)
def draw_n_iter(itercount=5, step=STEP):
s = step
seq = ['r']
for _ in range(itercount):
seq = heighway_extend(seq)
draw_from_seq(seq, step=s)
turtle.right(90)
turtle.speed(0)
draw_n_iter(11, step=STEP)
input()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment