5.12. Tworzenie histogramu

Problem

Dysponujemy tablicą zawierającą mnóstwo odwołań do stosunkowo niewielkiej liczby obiektów. Chcielibyśmy stworzyć mapę częstości tych odwołań, czyli histogram obrazujący częstotliwość występowania w tablicy odwołania do danego obiektu.

Rozwiązanie

Tworzymy hasz, przypisując każdemu elementowi liczbę jego wystąpień w tablicy.

module Enumerable def to_histogram inject(Hash.new(0)) { |h, x| h[x] += 1; h} end end [1, 2, 2, 2, 3, 3].to_histogram # => {1=>1, 2=>3, 3=>2} ["a", "b", nil, "c", "b", nil, "a"].to_histogram # => {"a"=>2, "b"=>2, "c"=>1, nil=>2} "Aye\nNay\nNay\nAbstaining\nAye\nNay\nNot Present\n".to_histogram # => {"Abstaining\n"=>1, "Nay\n"=>3, "Not Present\n"=>1, "Aye\n"=>2} ulubione_kolory ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.