Предположим, у вас есть массив типов задач, таких как:
types = [[:A,1],[:B,5],[:C,6],[:D,2],[:E,3]]
Вы можете сначала отсортировать, а затем использовать большее число в качестве контрольной точки для построения массива задач.
Пример:
types = [[:A,1],[:B,5],[:C,6],[:D,2],[:E,3]]
tasks=[]; i=0
asc = types.sort {|a,b| a[1] <=> b[1] }
max = asc[types.length-1][1]
(1..max).to_a.each do |i|
types.each {|t| tasks << t[0] if t[1] >= i}
end
puts tasks.inspect
производит:
[:A, :B, :C, :D, :E, :B, :C, :D, :E, :B, :C, :E, :B, :C, :B, :C, :C]