我不知道如何正确地表述问题,但我想要的是以下内容:
假设有一个像这样的数组
[1,1,1,1,2,2,2,3,3,3,4,4,5]
我如何排序它,直到它成为输出:
[1,2,3,4,5,1,2,3,4,1,2,3,1]
为了使输出更具可读性:
[[1,2,3,4,5],[1,2,3,4],[1,2,3],[1]]
到目前为止我想出的是:
array = [1,1,1,1,2,2,2,3,3,3,4,4,5]
array.group_by{|n| n }.values.transpose.flatten
但是由于没有相同数量的数字,这会引发错误。
有人可以帮忙吗?
最佳答案
这需要一段时间,但这是您想要的:
array = [1,1,1,1,2,2,2,3,3,3,4,4,5]
a = array.group_by{|n| n }.values.sort_by(&:length).reverse
a.each{|q| (a[0].size-q.size).times{q<<nil}}
a.sort.transpose.flatten.compact
它产生:
=> [1, 2, 3, 4, 5, 1, 2, 3, 4, 1, 2, 3, 1]
*你有3个2
关于ruby - 如何按数组可以创建的唯一组的数量对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29966975/