Jump to content

Fibonacci word: Difference between revisions

Added Wren
m (Fix Perl 6 -> Raku in comments)
(Added Wren)
Line 4,321:
36 14930352 0.959418728222743 <too long>
37 24157817 0.959418728222745 <too long>
</pre>
 
=={{header|Wren}}==
{{libheader|Wren-math}}
{{libheader|Wren-fmt}}
<lang ecmascript>import "/math" for Math
import "/fmt" for Fmt
 
var entropy = Fn.new { |s|
var m = {}
for (c in s) {
var d = m[c]
m[c] = (d) ? d + 1 : 1
}
var hm = 0
for (k in m.keys) {
var c = m[k]
hm = hm + c*Math.log2(c)
}
var l = s.count
return Math.log2(l) - hm/l
}
 
var fibWord = Fn.new { |n|
if (n < 2) return n.toString
var a = "1"
var b = "0"
var i = 3
while (i <= n) {
var c = b + a
a = b
b = c
i = i + 1
}
return b
}
 
Fmt.print("$2s $10s $10m $s", "n", "Length", "Entropy", "Fib word")
for (i in 1..37) {
var fw = fibWord.call(i)
if (i < 10) {
Fmt.print("$2d $,10d $0.8f $s", i, fw.count, entropy.call(fw), fw)
} else {
Fmt.print("$2d $,10d $0.8f $s", i, fw.count, entropy.call(fw), Fmt.abbreviate(20, fw))
}
}</lang>
 
{{out}}
<pre>
n Length Entropy Fib word
1 1 0.00000000 1
2 1 0.00000000 0
3 2 1.00000000 01
4 3 0.91829583 010
5 5 0.97095059 01001
6 8 0.95443400 01001010
7 13 0.96123660 0100101001001
8 21 0.95871188 010010100100101001010
9 34 0.95968689 0100101001001010010100100101001001
10 55 0.95931603 01001010010010100101...10010100100101001010
11 89 0.95945792 01001010010010100101...10010100100101001001
12 144 0.95940375 01001010010010100101...10010100100101001010
13 233 0.95942445 01001010010010100101...10010100100101001001
14 377 0.95941654 01001010010010100101...10010100100101001010
15 610 0.95941956 01001010010010100101...10010100100101001001
16 987 0.95941841 01001010010010100101...10010100100101001010
17 1,597 0.95941885 01001010010010100101...10010100100101001001
18 2,584 0.95941868 01001010010010100101...10010100100101001010
19 4,181 0.95941875 01001010010010100101...10010100100101001001
20 6,765 0.95941872 01001010010010100101...10010100100101001010
21 10,946 0.95941873 01001010010010100101...10010100100101001001
22 17,711 0.95941873 01001010010010100101...10010100100101001010
23 28,657 0.95941873 01001010010010100101...10010100100101001001
24 46,368 0.95941873 01001010010010100101...10010100100101001010
25 75,025 0.95941873 01001010010010100101...10010100100101001001
26 121,393 0.95941873 01001010010010100101...10010100100101001010
27 196,418 0.95941873 01001010010010100101...10010100100101001001
28 317,811 0.95941873 01001010010010100101...10010100100101001010
29 514,229 0.95941873 01001010010010100101...10010100100101001001
30 832,040 0.95941873 01001010010010100101...10010100100101001010
31 1,346,269 0.95941873 01001010010010100101...10010100100101001001
32 2,178,309 0.95941873 01001010010010100101...10010100100101001010
33 3,524,578 0.95941873 01001010010010100101...10010100100101001001
34 5,702,887 0.95941873 01001010010010100101...10010100100101001010
35 9,227,465 0.95941873 01001010010010100101...10010100100101001001
36 14,930,352 0.95941873 01001010010010100101...10010100100101001010
37 24,157,817 0.95941873 01001010010010100101...10010100100101001001
</pre>
 
9,485

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.