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

Theory of Combinatorial Algorithms

Prof. Emo Welzl and Prof. Bernd Gärtner

// Informatik - Serie 11 - Skriptaufgabe 125 // Prog: HuthmacherLukas.cpp // Autor: Lukas Huthmacher // Iterations: try 10 // Draw turtle graphics for the Lindenmayer system with // production F -> F+F+ and initial word F. #include #include unsigned int r=0; // POST: the word w_i^F is drawn void f (const unsigned int i) { if (i == 0) ifm::forward(2); // F else { f(i-1); // w_{i-1}^F ifm::left(60); // ifm::forward(); f(i-1); ifm::left(60); } } // POST: the word w_i^F is drawn void g (const unsigned int i) { if (i == 0) ifm::forward(); // F else { f(i-1); // w_{i-1}^F ifm::left(60); ifm::forward(2); ifm::right(60); ifm::forward(2); ifm::left(60); ifm::forward(2); ifm::right(60); ifm::forward(2); ifm::left(30); f(i-1); // w_{i-1}^F ifm::left(84); } } // POST: the word w_i^F is drawn void h (const unsigned int i) { if (i == 0) { ifm::forward(2); if(r%6==0) f(7); r=2; // F } else { ifm::forward(); ifm::left(80); ifm::forward(); ifm::left(180); ifm::forward(); ifm::left(20); ifm::forward(); ifm::left(180); ifm::forward(); ifm::right(100); ++r; h(i-1); } } // POST: the word w_i^F is drawn void j (const unsigned int i) { if (i == 0) { ifm::forward(4); // F f(7); } else { ifm::forward(2); ifm::save(); ifm::left(80); h(i-1); ifm::restore(); ifm::save(); ifm::right(80); r=5; h(i-1); ifm::restore(); ifm::forward(2); j(i-1); } } int main () { std::cout << "Number of iterations =? "; unsigned int n; std::cin >> n; // draw w_n = w_n(F) ifm::save(); ifm::left(27); for(int i=1;i<61;++i) g(10); f(7); ifm::restore(); ifm::left(90); ifm::forward(4); if (n>28)n=28; else if(n<20) n=20; j(n); return 0; }