Last active
July 16, 2016 01:22
-
-
Save amutake/4946357ba3bf5c3ae06a60360b84bf32 to your computer and use it in GitHub Desktop.
行灯人気投票集計スクリプト
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'csv' | |
classes = {} | |
file = ARGV[1] | |
GENEKI = '現役生' | |
OBOG = 'OBOG' | |
OTHER = 'その他' | |
CSV.foreach(file) do |row| | |
id = row[2] | |
c = classes[id] || { vote: 0, type: {GENEKI => 0, OBOG => 0, OTHER => 0}, comments: [] } | |
classes[id] = { | |
vote: c[:vote] + 1, | |
type: { | |
GENEKI => c[:type][GENEKI] + (if row[1] == GENEKI then 1 else 0 end), | |
OBOG => c[:type]['OBOG'] + (if row[1] == OBOG then 1 else 0 end), | |
OTHER => c[:type][OTHER] + (if row[1] == OTHER then 1 else 0 end) | |
}, | |
comments: c[:comments] + [row[3]] | |
} | |
end | |
classes = classes.map do |key, val| | |
val[:id] = key | |
val | |
end | |
classes.sort_by! do |c| | |
grade = 3 - c[:id][0].to_i | |
clazz = c[:id][2].to_i | |
[-c[:vote], grade, clazz] | |
end | |
count = 0 | |
rank = 1 | |
last_vote = nil | |
classes.each do |c| | |
count += 1 | |
if !last_vote || c[:vote] < last_vote | |
rank = count | |
end | |
last_vote = c[:vote] | |
c[:rank] = rank | |
end | |
puts '# 67th人気投票結果' | |
puts '' | |
puts '毎年恒例となった行灯人気投票です。今回も「最も良かった行灯」のみで投票いただきました。' | |
puts '' | |
puts '' | |
puts '## 結果発表' | |
puts '' | |
puts '| 順位 | クラス | 票数 (現役生, OBOG, その他) |' | |
puts '| ---- | ------ | --------------------------- |' | |
classes.each do |c| | |
puts "| #{c[:rank]} | #{c[:id]} | #{c[:vote]} (#{c[:type][GENEKI]}, #{c[:type][OBOG]}, #{c[:type][OTHER]}) |" | |
end | |
puts '' | |
puts '' | |
puts '## コメント' | |
classes.each do |c| | |
puts '' | |
puts "### #{c[:rank]}位 #{c[:id]}" | |
puts '' | |
puts '| コメント |' | |
puts '| -------- |' | |
c[:comments].each do |comment| | |
puts "| #{comment.gsub(/\n/, '<br>')} |" | |
end | |
end | |
puts '' | |
puts '今年は102名の方にご投票いただきました。ありがとうございました!' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment