Draws Fibonacci numbers as lines of binary and uses a XOR bit to decide which way to turn after each iteration.
Log in to post a comment.
Canvas.setpenopacity(1);
const turtle = new Turtle();
let f0 = [false]
let f1 = [true];
function FibonacciBinary(n) {
if (n==0) return f0;
if (n==1) return f1;
const next = [];
for (let i = 0; i < f1.length; i++){
if (f0[i] && f1[i]) {
next[i+1] = true; // carry
}
else if (f0[i] || f1[i]) {
if (next[i]) {
next[i] = false;
next[i+1] = true; // carry
} else {
next[i] = true;
}
}
}
f0 = f1;
f1 = next;
return next;
}
function walk(i) {
const bits = FibonacciBinary(i);
let xbit = false;
bits.map(bit => {
xbit = xbit ^ bit;
if (bit) {
turtle.pendown();
}
turtle.forward(0.05);
turtle.penup();
})
if (xbit) {
turtle.right(45);
}
else {
turtle.left(90);
}
return i < 1025;
}