Graph-driven Cellular Automata, with options for cell mutation, automatic picture saving, and scheduled event handling. Also used to create images for the coloring book Control Alt Color
Randomly generate a number between 0 and 4, use those to determine the seeds. This will prevent the need for a loop to ensure that a valid seed is chosen.
Line growth can cross over edges, especially if they're on a diagonal...this one will be difficult, because it'll require detection of line intersections. But it will also open a lot of future options
These two lines of code call the GraphTuple's reproduction clock, decrement it, then set it again. Probably cleaner/better to just create an age() function in the GraphTuple class.
Seriously. I need tests. I should list some potential tests to write
Given node is actually connected (and vice-versa) to a node that it is supposed to be connected to
-[ ] A line is the color it should be when created (mostly for mutation, depth-based coloring, and edges)