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

Theory of Combinatorial Algorithms

Prof. Emo Welzl and Prof. Bernd Gärtner

// Computer Science for Mathematicians and Physicists - Series 11 - Exercise 127 // Author: Jan Gilcher // Program: GilcherJan.cpp // draws turtle graphics for the Lindenmayer system with production // F ->FFF[+FF][-FF][++FF][--FF][+++FF][---FF]F, initial word F-F-F++F++F++F---F // ---F---F---F++F++F++F-F-F++F++F++F---F---F---F---F++F++F++F-F-F++F++F++F---F- // --F---F---F++F++F++F-F-F++F++F++F---F---F---F---F++F++F++F-F-F++F++F++F---F-- // -F---F---F++F++F++F-F-F++F++F++F---F---F---F---F++F++F++F and rotation angle // 30 degrees #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); // F f(i-1); // F f(i-1); // F ifm::save(); // [ ifm::left(30); // + f(i-1); // F f(i-1); // F ifm::restore(); // ] ifm::save(); // [ ifm::right(30); // - f(i-1); // F f(i-1); // F ifm::restore(); // ] ifm::save(); // [ ifm::left(60); // ++ f(i-1); // F f(i-1); // F ifm::restore(); // ] ifm::save(); // [ ifm::right(60); // -- f(i-1); // F f(i-1); // F ifm::restore(); // ] ifm::save(); // [ ifm::left(90); // +++ f(i-1); // F f(i-1); // F ifm::restore(); // ] ifm::save(); // [ ifm::right(90); // --- f(i-1); // F f(i-1); // F ifm::restore(); // ] f(i-1); // F } } int main() { std::cout << "number of iterations n= ?" << std::endl; unsigned int n; std::cin >> n; f(n); ifm::right(30); f(n); ifm::right(30); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::right(90); f(n); ifm::right(90); f(n); ifm::right(90); f(n); ifm::right(90); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::right(30); f(n); ifm::right(30); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::right(90); f(n); ifm::right(90); f(n); ifm::right(90); f(n); ifm::right(90); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::right(30); f(n); ifm::right(30); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::right(90); f(n); ifm::right(90); f(n); ifm::right(90); f(n); ifm::right(90); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::right(30); f(n); ifm::right(30); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::right(90); f(n); ifm::right(90); f(n); ifm::right(90); f(n); ifm::right(90); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::right(30); f(n); ifm::right(30); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::right(90); f(n); ifm::right(90); f(n); ifm::right(90); f(n); ifm::right(90); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::right(30); f(n); ifm::right(30); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::right(90); f(n); ifm::right(90); f(n); ifm::right(90); f(n); ifm::right(90); f(n); ifm::left(60); f(n); ifm::left(60); f(n); ifm::left(60); f(n); return 0; }