Нахождение суммы, самой высокой, самой низкой в ​​Hash / Array.Рубин - PullRequest
0 голосов
/ 01 марта 2019

Я довольно новичок в этом, поэтому я заранее извиняюсь за свое новшество.Я работал над проектом, в котором я хочу получить сумму, самую высокую, самую низкую из хеша / массива.Я пытался много раз, чтобы получить это право, но обычно я получаю сообщение об ошибке, например, fixNum не может преобразовать int в строку и неопределенный метод.Я попытаюсь исправить эти проблемы, а затем столкнусь с другой проблемой, поэтому я в растерянности.Для записи в моем текстовом файле у меня есть 1,Foo,22 2,Smith,30 мой вывод выглядит следующим образом {1=>["Foo",22], 2=>["Smith",30]} Я бы хотел, чтобы наибольшее число показывало 30, самое низкое - 22, а общее - 52 для разных выходов.

Ответы [ 3 ]

0 голосов
/ 01 марта 2019

Преобразовать в хэш и вычислить минимальный максимальный на основе значений

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
0 голосов
/ 01 марта 2019

Вы можете сделать, как показано ниже, допустим, допустим, переменная 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
0 голосов
/ 01 марта 2019

Хорошо, это очень уродливо, и кто-то, вероятно, улучшит это, но это работает.Предполагая, что я понимаю, что вы хотели бы получить.

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

# sum 
elements.sum

# highest
elements.max

# lowest
elements.min

https://repl.it/repls/AntiqueOldfashionedRom

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...