Fibonacci word: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (Fix Perl 6 -> Raku in comments) |
(Added Wren) |
||
Line 4,321: | Line 4,321: | ||
36 14930352 0.959418728222743 <too long> |
36 14930352 0.959418728222743 <too long> |
||
37 24157817 0.959418728222745 <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> |
</pre> |
||