class LSystem {
constructor(start, rules) {
this.start = start;
this.rules = rules;
}
step(state) {
return state
.split("")
.flatMap((s) => this.rules.hasOwnProperty(s) ? this.rules[s] : s)
.join("");
}
iteration(n) {
let state = this.start;
for (let k = 0; k < n; k = k + 1) {
state = this.step(state);
}
return state;
}
}