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

Theory of Combinatorial Algorithms

Prof. Emo Welzl and Prof. Bernd Gärtner

// Prog: Lindenmayer.cpp #include #include // POST: the word w_i^F is drawn void f (const unsigned int i) { if (i == 0) ifm::forward(); // F else { f(i-1); // w_{i-1}^F f(i-1); // w_{i-1}^F ifm::left(40); // - ifm::save(); // [ stores current position and direction ifm::left(40); // - f(i-1); // w_{i-1}^F ifm::right(15); // + f(i-1); // w_{i-1}^F ifm::right(15); // + f(i-1); // w_{i-1}^F ifm::restore(); // ] goes back to last stored position / direction ifm::right(40); // + ifm::save(); // [ ifm::right(40); // + f(i-1); // w_{i-1}^F ifm::left(15); // - f(i-1); // w_{i-1}^F ifm::left(15); // - f(i-1); // w_{i-1}^F ifm::restore(); // ] } } int main () { std::cout << "Number of iterations =? "; unsigned int n; std::cin>>n; // draw w_n = w_n^F ifm::left(90); // loook up f(n); // w_n^F ifm::right(12); f(n); ifm::right(78); f(n); ifm::right(50); f(n); ifm::forward(0.5); ifm::right(101); f(n); ifm::left(60); f(n); ifm::forward(80); f(n); ifm::left(101); f(n); ifm::forward(80); f(n); return 0; }