#include <math.h>
#include "svg.h"

void peanoB(int n, double x);

int color;
int dcolor = 1;

void forwardPlus(double d) {
    forward(d);
    stroke(color = rotateH360(color, dcolor));
}

void peanoA(int n, double d) {
    if (n==0) {
        return;
    }  else {
        int m = n-1;
        peanoA(m, d);
        forwardPlus(d);
        peanoB(m, d);
        forwardPlus(d);
        peanoA(m, d);
        turn(90);
        forwardPlus(d);
        turn(90); 
        peanoB(m, d);
        forwardPlus(d);
        peanoA(m, d);
        forwardPlus(d);
        peanoB(m, d); 
        turn(-90);
        forwardPlus(d);
        turn(-90);
        peanoA(m, d);
        forwardPlus(d);
        peanoB(m, d);
        forwardPlus(d);
        peanoA(m, d);
    }
}

void peanoB(int n, double d) {
    if (n==0) {
        return;
    }  else {
        int m = n-1;
        peanoB(m, d);
        forwardPlus(d);
        peanoA(m, d);
        forwardPlus(d);
        peanoB(m, d); 
        turn(-90);
        forwardPlus(d);
        turn(-90);
        peanoA(m, d);
        forwardPlus(d);
        peanoB(m, d);
        forwardPlus(d);
        peanoA(m, d);
        turn(90);
        forwardPlus(d);
        turn(90); 
        peanoB(m, d);
        forwardPlus(d);
        peanoA(m, d);
        forwardPlus(d);
        peanoB(m, d);
    }
}

int main(void) {
    start();
    stroke(color = hsb360(0, 100, 100));
    strokeWeight(0.5);
    penUp();
    turn(-90); forwardPlus(90); turn(90); forwardPlus(-90);
    penDown();
    peanoA(4, 2.4);
    finish();
    return 0;
}
