18 lines
328 B
Bash
18 lines
328 B
Bash
function entropy {
|
|
typeset -i i len=${#1}
|
|
typeset -X13 r=0
|
|
typeset -Ai counts
|
|
|
|
for ((i = 0; i < len; ++i))
|
|
do
|
|
counts[${1:i:1}]+=1
|
|
done
|
|
for i in "${counts[@]}"
|
|
do
|
|
r+='i * log2(i)'
|
|
done
|
|
r='log2(len) - r / len'
|
|
print -r -- "$r"
|
|
}
|
|
|
|
printf '%g\n' "$(entropy '1223334444')"
|