generate method
How the L-System will generate its string output for a number of
iterations
.
Implementation
@override
String generate(
int iterations,
) {
assert(
!iterations.isNegative,
'iterations must be equal to or greater than zero',
);
if (iterations == 0) {
return axiom;
}
var sentence = axiom;
while (iterations != 0) {
var nextGeneration = StringBuffer();
for (var i = 0; i < sentence.length; i++) {
final currentSymbol = sentence[i];
var replace = currentSymbol;
for (final productionRule in productionRuleSet) {
final predecessor = productionRule.predecessor;
if (predecessor == currentSymbol) {
replace = productionRule.successor;
break;
}
}
nextGeneration.write(replace);
}
sentence = nextGeneration.toString();
iterations--;
}
return sentence;
}