Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from turtle import *
- axiomA='A'
- rulesA = {}
- rulesA['A'] = 'AB'
- rulesA['B'] = 'A'
- axiomB='B'
- rulesB = {}
- rulesB['B'] = 'BA'
- rulesB['A'] = 'B'
- axiomF='F'
- rulesF = {}
- rulesF['F'] = 'F+F-F-F+F'
- turtleRulesF = {}
- turtleRulesF['F'] = 'forward(10)'
- turtleRulesF['+'] = 'left(90)'
- turtleRulesF['-'] = 'right(90)'
- axiomS='A'
- rulesS = {}
- rulesS['A'] = 'B-A-B'
- rulesS['B'] = 'A+B+A'
- turtleRulesS = {}
- turtleRulesS['A'] = 'forward(5)'
- turtleRulesS['B'] = 'forward(5)'
- turtleRulesS['+'] = 'left(60)'
- turtleRulesS['-'] = 'right(60)'
- def compose(axiom, rules):
- output = ""
- for i in axiom:
- output = output + rules.get(i,i)
- return output
- def iterate(axiom,rules, times):
- output = ''
- if times == 0:
- output = axiom
- else:
- return iterate(compose(axiom, rules), rules, times -1)
- return output
- #print iterate(axiomA,rulesB,6)
- #print iterate(axiomB,rulesA,6)
- #directions = iterate(axiomF,rulesF,3)
- #print directions
- def evaluate(axiom,rules,turtleRules,times):
- for words in iterate(axiom,rules,times):
- eval(turtleRules[words])
- speed(0)
- setx(-200)
- color('red','yellow')
- begin_fill()
- evaluate(axiomS,rulesS,turtleRulesS,6)
- end_fill()
- done()
- #special thanks to http://www.4dsolutions.net/ocn/lsystems.html
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement