Как я могу использовать хэш и создать список имен и оценок и ранжировать их? - PullRequest
0 голосов
/ 28 января 2019

EX.Джо 90, Майк 80, Стив 100.

Как бы я распечатать что-то вроде ниже?Возможно ли это даже в Ruby?

Rank    Name    Score
1           Steve     100
2           Joe         90
3           Mike      80

Любая помощь с благодарностью !!

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Как отмечено в комментариях, наиболее интуитивно понятный способ решения этой проблемы состоит в том, чтобы, вероятно, иметь массив пользователей, где каждый пользователь представлен в своем хэше (что может быть тем, на что вы ссылались в своем вопросе).

users = [
  { name: "Joe", score: 90 }, 
  { name: "Mike", score: 80 }, 
  { name: "Steve", score: 100 }
]

sorted_users = users.sort_by { |user| user[:score] }.reverse

puts "Rank   Name      Score"

sorted_users.each_with_index do |user, index|
  rank_str = (index + 1).to_s.ljust(7)
  name_str = user[:name].ljust(10)
  score_str = user[:score].to_s.rjust(5)
  puts "#{rank_str}#{name_str}#{score_str}"    
end

, который распечатает следующее

# Rank   Name      Score
# 1      Steve       100
# 2      Joe          90
# 3      Mike         80
0 голосов
/ 29 января 2019

вы можете выполнять итерации по Ruby Hash, используя each_with_index

{ steve: 100, jeo: 90,mike: 80 }.each_with_index do |(key, value), index|
  puts "#{index}: #{key} => #{value}"
end
...