RedLSystem rewrite strings

simple string rewrite class.

see also [RedLTurtle]

class methods:

*new(axiom, rules)

axiom is the starting string / seed

rules should be a dictionary in the form of (character: replacement string)

instance methods:

next

rewrite and go to next generation

reset

reset generation counter to zero and the production to the axiom

rules_(dict)

change the rules during the game - not recommended

dictionary in the form of (character: replacement string)

asString

convert nested production array into a single string

instance variables:

<>axiom

starting string

<rules

dictionary in the form of (character: replacement array of characters)

note the difference from the dictionary used for *new and rules_

<production

the current production as a nested array

<generation

counter

a= RedLSystem("F", ($F: "FO")) //a single rule - replace all F with FO

a.next

a.next

a.next

a= RedLSystem("F", ($F: "FO", $O: "O-F")) //multiple rules

a.next

a.next

a.next

a.next

a.generation

a.production //the nested array

a.rules //rules