The   Fibonacci Word   may be created in a manner analogous to the   Fibonacci Sequence   as described here:

    Define   F_Word1   as   1
    Define   F_Word2   as   0
    Form     F_Word3   as   F_Word2     concatenated with   F_Word1    i.e.:   01
    Form     F_Wordn   as   F_Wordn-1   concatenated with   F_wordn-2



Task

Perform the above steps for     n = 37.

You may display the first few but not the larger values of   n.

{Doing so will get the task's author into trouble with them what be (again!).} 

Instead, create a table for   F_Words   1   to   37   which shows:

   The number of characters in the word
   The word's Entropy


Related tasks
 
   Fibonacci word/fractal
   Entropy
   Entropy/Narcissist


proc fibwords {n} {
    set fw {1 0}
    while {[llength $fw] < $n} {
	lappend fw [lindex $fw end][lindex $fw end-1]
    }
    return $fw
}
 
proc fibwordinfo {num word} {
    # Entropy calculator from Tcl solution of that task
    set log2 [expr log(2)]
    set len [string length $word]
    foreach char [split $word ""] {dict incr counts $char}
    set entropy 0.0
    foreach count [dict values $counts] {
	set freq [expr {$count / double($len)}]
	set entropy [expr {$entropy - $freq * log($freq)/$log2}]
    }
    # Output formatting from Clojure solution
    puts [format "%2d %10d %.15f %s" $num $len $entropy \
	    [if {$len < 35} {set word} {subst "<too long>"}]]
}
 
# Output formatting from Clojure solution
puts [format "%2s %10s %17s %s" N Length Entropy Fibword]
foreach word [fibwords 37] {
    fibwordinfo [incr i] $word
}