Joao S. wrote in post #1067849:

a = [1 2 2 3 5 4 6 2 6 5 4]

I calculate the number that is repeated over and less repeats and if

possible to calculate something like this for example:

=> With 0 repeats found the number 1.3, etc.

=> With 1 repetition was found the number: 4, etc.

=> With 2 repetitions was found the number 5, etc.

Do it in steps. First count the number of times each value is seen:

a = [1, 2, 2, 3, 5, 4, 6, 2, 6, 5, 4]

counts = Hash.new(0)

a.each { |val| counts[val] += 1 }

# optional: counts = counts.sort_by { |val,count| count }

counts.each do |val,count|

puts “With #{count-1} repeats found the number #{val}”

end

This is a starting point. Then you can look at grouping together values

with the same count.

a = [1, 2, 2, 3, 5, 4, 6, 2, 6, 5, 4]

counts = Hash.new(0)

a.each { |val| counts[val] += 1 }

groups = {}

counts.each do |val,count|

groups[count] ||= []

groups[count] << val

end

groups.each do |count,vals|

puts “With #{count-1} repeats found #{vals.sort.join(”, “)}”

end

When you’re clear what’s happening here then you can look at the more

compact versions using group_by.