在哈希/数组中找到总和,最高,最低。红宝石

时间:2019-03-01 05:51:42

标签: ruby

对此我还比较陌生,因此在接受新手之前要道歉。我一直在一个项目中,我想从哈希/数组中获得最高,最低的总和。我已经尝试了很多次,但是通常我会得到一个错误,例如fixNum无法将int转换为字符串和未定义的方法。我将尝试解决这些问题,然后遇到另一个问题,所以我很茫然。对于我的文本文件中的记录,我有1,Foo,22 2,Smith,30,我的输出看起来像这样{1=>["Foo",22], 2=>["Smith",30]}:对于不同的输出,我希望最大的数字显示30,最低的显示22,总计52。

3 个答案:

答案 0 :(得分:2)

您可以按照以下步骤进行操作,然后假设变量a = {a: [a,1],b: [b,1] }

values = a.values.map(&:last) //Gives the last element of each array
max= a.max
min = a.min
sum = a.sum

答案 1 :(得分:1)

好的,这很丑陋,可能有人会对此进行改进,但是可以。假设我了解您想要的输出。

elements = h.map{ |element| element[1] }.map { |element| element[1]}

# sum 
elements.sum

# highest
elements.max

# lowest
elements.min

https://repl.it/repls/AntiqueOldfashionedRom

答案 2 :(得分:0)

转换为散列并根据值计算最小最大值

data = "1,Foo,22 2,Smith,30"
people = 
    data.split(",")
        .each_slice(3)
        .map {|slice| [slice[0], [slice[1], slice[2]]] }
        .to_h

values = people.values.map {|person| person[1] }
min = values.min
max = values.max
sum = values.sum