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 - Skript-Aufgabe 125 // Programm: FreiFabian.cpp // Autor: Fabian Frei // A confused deformation of Arnold.Wohlwend.C #include #include void g (unsigned int i) { if (i == 1) ifm::forward(); // F else { g(i-1); // w_{i-1}^F ifm::right(80); // - g(i-1); // w_{i-1}^F ifm::left(60); // ++ g(i-1); // w_{i-1}^F ifm::right(80); // - g(i-1); // w_{i-1}^F } } // POST: the word w_i^F is drawn void f (unsigned int i) { if (i == 0) ifm::forward(); // F else { f(i-1); // F f(i-1); // F ifm::left(42); // + ifm::save(); // [ ifm::left(42); // + f(i-1); // F ifm::right(42); // - f(i-1); // F ifm::right(42); // - f(i-1); // F ifm::restore(); // ] ifm::right(42); // - ifm::save(); // [ ifm::right(42); // - f(i-1); // F ifm::left(42); // + f(i-1); // F ifm::left(42); // + f(i-1); // F ifm::restore(); // ] } } void b (unsigned int i) { if (i==0) ifm::forward(); else { ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::save(); ifm::left(104); f(i); ifm::restore(); ifm::save(); ifm::right(104); f(i); ifm::restore(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::save(); ifm::left(120); f(i); ifm::restore(); ifm::save(); ifm::right(120); f(i); ifm::restore(); ifm::forward(); b(i-1); } } int main () { //std::cout << "Number of iterations =? "; unsigned int n; //std::cin >> n; n=4; // draw w_n = w_n(F), vertically ifm::left(225); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::save(); b(n); ifm::restore(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); ifm::forward(); b(n); n=7; // draw w_n = w_n^F++w_n^F++w_n^F g(n); // w_n^F ifm::left(300); // ++ g(n); // w_n^F ifm::left(60); // ++ g(n); // w_n^F return 0; }