所以我在这里遇到一些问题,决定用什么工具来解决这个问题。这是一个相当复杂的问题,但我会尽力描述它。
此刻,我收集了值并将其存储在哈希值中。做事的哈希方式可以改为你认为更好的任何其他方式。我现在只是使用哈希来保持关系,因为它很重要。
类似于:
key -> value
1456 -> 1
1532 -> 50
1892 -> 2
1092 -> 5
1487 -> 10
5641 -> 5
1234 -> 2
1687 -> 1
我的目标是获取值,并调整它们,以便没有重复项,然后将调整后的值放回与键的适当关系中。基本上我不希望删除重复值,我希望它们以某种方式更改,以便不再有重复项。 (以上示例中的重复项为:1和2)
这里的附注是对我的情况要记住的一些重要事项的总结:
通常我会排序整数数组,但在这种情况下,与其他值的关系给我带来了很多麻烦。
答案 0 :(得分:0)
input = { 1456 => 1,
1532 => 50,
1892 => 2,
1092 => 5,
1487 => 10,
5641 => 5,
1234 => 2,
1687 => 1 }
values = input.sort_by { |a,b| b }.map { |a,b| a }
# => [1456, 1687, 1892, 1234, 1092, 5641, 1487, 1532]
Hash[*values.flat_map.with_index(1) { |a,i| [a,i] }]
# => {1456=>1, 1687=>2, 1892=>3, 1234=>4, 1092=>5, 5641=>6, 1487=>7, 1532=>8}
所有必要的信息都包含在values
数组中。