24 lines
464 B
Text
24 lines
464 B
Text
go =>
|
|
foreach(N in 1..37)
|
|
F = fib(N),
|
|
E = entropy(F),
|
|
if N <= 10 then
|
|
printf("%3d %10d %0.16f %w\n",N,length(F),E,F)
|
|
else
|
|
printf("%3d %10d %0.16f\n",N,length(F),E)
|
|
end
|
|
end,
|
|
nl.
|
|
|
|
table
|
|
fib(1) = "1".
|
|
fib(2) = "0".
|
|
fib(N) = fib(N-1) ++ fib(N-2).
|
|
|
|
entropy(L) = Entropy =>
|
|
Len = L.len,
|
|
Occ = new_map(),
|
|
foreach(E in L)
|
|
Occ.put(E, Occ.get(E,0) + 1)
|
|
end,
|
|
Entropy = -sum([P2*log2(P2) : _C=P in Occ, P2 = P/Len]).
|