我正在努力解决这个小问题。我需要轮询用户选举输入并输出获胜者。
输入:投票10人投票。 输出:打印总投票数和选举获胜者。
Example:
Election candidates are: Tom, James, Anne
Vote #1: <Anne>
Vote #2: <Anne>
Vote #3: <James>
Vote #4: <Tom>
Vote #5: <Tom>
Vote #6: <Anne>
Vote #7: <Anne>
Vote #8: <James>
Vote #9: <James>
Vote #10: <Anne>
RESULTS....
Vote Summary:
Anne - 5 vote(s)
James - 3 vote(s)
Tom - 2 vote(s)
WINNER: Anne!
我正在考虑使用每个迭代器来填充用户的所有投票&#39;候选人的投入。像这样:
(1..10).each do|i|
puts "Vote##{i}: " + "<"+gets.chomp+">"
end
但是,我不知道如何找到每个候选人的总票数。任何建议将不胜感激。
答案 0 :(得分:1)
您需要将输入的值存储到哈希中,然后处理结果:
results = (1..10).each.with_object(Hash.new(0)) do |i, hash|
name = gets.chomp
hash[name] += 1
puts "Vote##{i}: <#{name}>"
end
puts "RESULTS...."
puts "Votes Summary:"
results.each do |name, votes|
puts "#{name} - #{votes} vote(s)"
end
winner = results.max_by(&:last)
puts "WINNER: #{winner}!"