Letter frequency: Difference between revisions

m (Show simplified alternative)
Line 1,888:
["w", 1]</pre>
 
=={{header|=Ruby 2.0}}===
<lang ruby>def letter_frequency(file)
freq = Hash.new(0)
def letter_frequency(file)
file.each_char.lazy.grep(/[[:alpha:]]/).map(&:upcase).injecteach_with_object({}freq) do |freq_mapchar, charfreq_map|
freq_map[char] ||= 0
freq_map[char] += 1
freq_map
end
end
 
letter_frequency(ARGF).sort.each do |letter, frequency|
puts "#{letter}: #{frequency}\n"
end</lang>
</lang>
 
note that this version *should* use less memory, even on a gigantic file. This is done by using lazy enumerables, which ruby 2.0 introduces.
Anonymous user