Department of Computer Science | Institute of Theoretical Computer Science | CADMO

Theory of Combinatorial Algorithms

Prof. Emo Welzl and Prof. Bernd Gärtner

// Program: read_array.cpp // Draw turtle graphics for the lindenmayer system with productions // Y -> YFFF[+FFFFF][-FFFFF] + XFF + ZF // X -> X[-FF][+FF] + Y[-FF][+FF] + ZFF // Z -> X-F + Y-F #include #include void x(const unsigned int i); // die Funktionen X, Y und Z rufen sich void z(const unsigned int i); // gegenseitig auf //POST: the word w_i^Y is drawn void y(const unsigned int i) { if(i>0) { y(i-1); // w_{i-1}^Y ifm::forward(3); // FFF ifm::save(); ifm::left(45); // + ifm::forward(5); // FFFFF ifm::restore(); ifm::save(); ifm::right(45); // - ifm::forward(5); // FFFFF x(i-1); // w_{i-1}^X ifm::forward(2); // FF z(i-1); // w_{i-1}^Z ifm::forward(); // F } } //POST: the word w_i^X is drawn void x(const unsigned int i) { if(i>0) { x(i-1); // w_{i-1}^X ifm::save(); ifm::right(45); // - ifm::forward(2); // FF ifm::restore(); ifm::save(); ifm::left(45); // + ifm::forward(2); // FF ifm::restore(); ifm::save(); y(i-1); // w_{i-1}^Y ifm::right(); // - ifm::forward(2); // FF ifm::restore(); ifm::save(); ifm::left(); // + ifm::forward(2); // FF z(i-1); // w_{i-1}^Z ifm::forward(2); // FF } } //POST: the word w_i^Z is drawn void z(const unsigned int i) { if(i>0) { x(i-1); // w_{i-1}^X ifm::right(); // - ifm::forward(); // F y(i-1); // w_{i-1}^Y ifm::right(); // - ifm::forward(); // F } } int main() { std::cout << "Number of iterations = ?" << "\n"; unsigned int n; std::cin >> n; y(n); x(n); return 0; }