29 lines
591 B
Plaintext
29 lines
591 B
Plaintext
function log2(atom v)
|
|
return log(v)/log(2)
|
|
end function
|
|
|
|
function entropy(sequence s)
|
|
sequence symbols = {},
|
|
counts = {}
|
|
integer N = length(s)
|
|
for i=1 to N do
|
|
object si = s[i]
|
|
integer k = find(si,symbols)
|
|
if k=0 then
|
|
symbols = append(symbols,si)
|
|
counts = append(counts,1)
|
|
else
|
|
counts[k] += 1
|
|
end if
|
|
end for
|
|
atom H = 0
|
|
integer n = length(counts)
|
|
for i=1 to n do
|
|
atom ci = counts[i]/N
|
|
H -= ci*log2(ci)
|
|
end for
|
|
return H
|
|
end function
|
|
|
|
?entropy("1223334444")
|