日常業務で何をやっていたのかは逐一メモしているわけですが、
それを集計するというのはよくやるわけです。
というわけでそんなプログラム。
# 09:00 12:00 Hoge メール対応 # 12:00 13:00 社内 休憩 # 13:00 16:00 Fuga 訪問 # # という形式のファイルを元に、以下のサマリリストを得る # # Hoge 3.0 # 社内 1.0 # Fuga 3.0 require 'time' tasks = {} TaskEntry = Struct.new(:start_time, :end_time, :group, :task) while line = gets entry = TaskEntry.new(*line.split) if tasks[entry.group] == nil then tasks[entry.group] = [] end tasks[entry.group] << entry end summary = {} tasks.each {|group,tasklist| tasklist.each {|t| if summary[group] == nil then summary[group] = 0 end summary[group] += Time.parse(t.end_time) - Time.parse(t.start_time) } } summary.each {|group,value| print group,"\t", value/3600, "\n" }