Если бы у меня был список шаров, каждый из которых имеет свойство цвета. Как я могу получить список шаров с наиболее часто встречающимся цветом.
[m1,m2,m3,m4]
скажем,
m1.color = blue
m2.color = blue
m3.color = red
m4.color = blue
[m1,m2,m4]
- список шаров с наиболее часто встречающимся цветом
Мой подход заключается в следующем:
[m1,m2,m3,m4].group_by{|ball| ball.color}.each do |samecolor|
my_items = samecolor.count
end
где количество определяется как
class Array
def count
k =Hash.new(0)
self.each{|x|k[x]+=1}
k
end
end
my_items будет хешем частот для каждой цветовой группы. Моя реализация может быть ошибочной, и я чувствую, что должен быть лучший и более умный способ.
есть идеи, пожалуйста?