背景:联盟有很多玩家,其中有很多城镇。每个城镇都属于海洋。
我的问题:
我试图计算特定海洋中城镇的百分比。 E.g:
<% @alliance.players.each do |p| %>
<% p.towns.each do |t| %>
<%= t.ocean %>
<% end %>
<% end %>
这给了我一个给定联盟的所有Town's Ocean's
。输出将如下所示:
54 54 54 54 54 35 54 54 54 54 54 54 54 54 45 45 45 45 45 45 54 54 54 44 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 44 54 44 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54 54
所以我们有多数:54 和少数:44 。
我如何计算结果,以便获得特定海洋中城镇的百分比,以便得到例如:Ocean 54: 83%
,Ocean 44: 17%
的输出。
答案 0 :(得分:3)
怎么样:
percentages = p.towns.group_by(&:ocean).map {|ocean, towns| [ocean, (towns.count/p.towns.count.to_f * 100).round(0)]}.to_h
perentages.each {|ocean, percentage| puts "Ocean #{ocean}: #{percentage}%"}