program fibonacci_words; print("N Length Entropy"); print("---- ---------- -------------------"); loop for n in [1..37] do [zeroes, ones] := fibword := fib_word n; length := zeroes + ones; print(lpad(str n,4) + " " + lpad(str length,10) + " " + str entropy fibword); end loop; $ Return the amount of zeroes and ones in the N'th fibonacci word op fib_word(n); [a0, a1, b0, b1] := [0, 1, 1, 0]; loop for i in [2..n] do [a0, a1, b0, b1] := [b0, b1, a0+b0, a1+b1]; end loop; return [a0, a1]; end op; op entropy(fibword); [zeroes, ones] := fibword; fzeroes := zeroes / (zeroes + ones); fones := ones / (zeroes + ones); if fzeroes = 0 or fones = 0 then return 0; end if; return -fzeroes*log fzeroes/log 2 - fones*log fones/log 2; end op; end program;