RosettaCodeData/Task/Entropy-Narcissist/Ruby/entropy-narcissist.rb
2023-07-01 13:44:08 -04:00

11 lines
220 B
Ruby

def entropy(s)
counts = s.each_char.tally
size = s.size.to_f
counts.values.reduce(0) do |entropy, count|
freq = count / size
entropy - freq * Math.log2(freq)
end
end
s = File.read(__FILE__)
p entropy(s)