Skip to content

Instantly share code, notes, and snippets.

@dce
Created April 23, 2011 17:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dce/1a1926e7d41655889d8d to your computer and use it in GitHub Desktop.
Save dce/1a1926e7d41655889d8d to your computer and use it in GitHub Desktop.
Parse typing practice stats
open ARGV.first do |file|
avg = lambda do |data, slot|
data.inject(0.0) do |sum, datum|
sum + datum.send(:[], slot).to_i
end / data.size
end
data = file.read.split(/\n\n## /).map do |round|
round.gsub!(/.*\n\n/, "")
round.split(/\n/).map do |row|
value = row.split(": ").last
if value.include?(":")
minutes, seconds = value.split(":").map(&:to_i)
value = minutes * 60 + seconds
end
value
end
end
puts "Rounds: #{ data.size }"
puts "WPM: #{ avg[data, 0] }"
puts "Time: #{ avg[data, 1] } seconds"
puts "Correct: #{ avg[data, 2] }"
puts "Incorrect: #{ avg[data, 3] }"
puts "Accuracy: #{ avg[data, 2] / (avg[data, 2] + avg[data, 3]) }"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment