// Informatik - Serie 11 - Aufgabe 107
// Programm: ArnoldWohlwend.C
// Autor: Noldi Wohlwend (Gruppe D)
#include
#include
// Post: the word w_i^F is drawn
void g (unsigned int i) {
if (i == 0)
ifm::forward(); // F
else {
g(i-1); // w_{i-1}^F
ifm::right(60); // -
g(i-1); // w_{i-1}^F
ifm::left(80); // ++
g(i-1); // w_{i-1}^F
ifm::right(60); // -
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(22); // +
ifm::save(); // [
//ifm::left(42); // +
f(i-1); // F
ifm::right(22); // -
f(i-1); // F
ifm::right(22); // -
f(i-1); // F
ifm::restore(); // ]
ifm::right(22); // -
ifm::save(); // [
ifm::right(22); // -
f(i-1); // F
ifm::left(22); // +
f(i-1); // F
ifm::left(22); // +
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(120);
f(i);
ifm::restore();
ifm::save();
ifm::right(120);
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(90);
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=9;
// draw w_n = w_n^F++w_n^F++w_n^F
g(n); // w_n^F
ifm::left(120); // ++
g(n); // w_n^F
ifm::left(120); // ++
g(n); // w_n^F
return 0;
}