使用Ruby创建简单的选举投票

时间:2017-08-17 18:25:18

标签: ruby

我正在努力解决这个小问题。我需要轮询用户选举输入并输出获胜者。

输入:投票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

但是,我不知道如何找到每个候选人的总票数。任何建议将不胜感激。

1 个答案:

答案 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}!"