17 lines
384 B
Plaintext
17 lines
384 B
Plaintext
program shannon_entropy;
|
|
print(entropy "1223334444");
|
|
|
|
op entropy(symbols);
|
|
hist := {};
|
|
loop for symbol in symbols do
|
|
hist(symbol) +:= 1;
|
|
end loop;
|
|
h := 0.0;
|
|
loop for count = hist(symbol) do
|
|
f := count / #symbols;
|
|
h -:= f * log f / log 2;
|
|
end loop;
|
|
return h;
|
|
end op;
|
|
end program;
|