#!/usr/bin/env ruby # read request-table.txt re = /(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/ hourly = Array.new(24){ Array.new(12) } ARGF.each_line do |line| if re.match(line) for min in 0 .. 11 hourly[$1.to_i][min] = Regexp.last_match(min + 2).to_i end end end means = Array.new(12) for min in 0 .. 11 mean = 0 for hour in 0 .. 23 mean += hourly[hour][min] end means[min] = Float(mean) / 24 end cc_matrix = Array.new(12){ Array.new(12) } for m0 in 0 .. 11 for min in 0 .. 11 cov = 0 sum_dx2 = sum_dy2 = 0 for hour in 0 .. 23 x = hourly[hour][m0] y = hourly[hour][min] cov += (x - means[m0]) * (y - means[min]) sum_dx2 += (x - means[m0])**2 sum_dy2 += (y - means[min])**2 end cc_matrix[m0][min] = Float(cov) / Math.sqrt(sum_dx2 * sum_dy2) end end for m0 in 0 .. 11 for min in 0 .. 11 printf "%.3f ", cc_matrix[m0][min] end print "\n" end