From: Alex Combas Date: 2006-03-03T08:40:58+09:00 Subject: refactor sentencelength solution Hello,This is my solution to the Sentence length solution on the StartProblemspage of the RubyGarden wiki. I learned a few things from doing this simple exercise and I wasjust wondering if anyone would be willing to help me refactor thecode as a further learning exercise. I'm not looking for a new solution, I just want to make this existingsolution better, andimprove the OO of the code. You can post replys to this email, or you can post replyson my blog, where I also have this posted.Either will be very appreciated! class Evaluator def initialize(file) @reg = [] @char = "" File.open(file, 'r') do |f| f.each do |line| @char << line end end split_and_strip(@char) end #split every sentence, then strip the newline characters. def split_and_strip(str) str.split(/[.?!]\s*/).each do |x| @reg << x.gsub("\n", " ") end end def average? @char = @reg.inject(0) do |m,o| m + o.length end print "\nThe average sentence is ", (@char / @reg.length), "characters long." end def biggest? @char = @reg.inject(@reg[0].length) do |m,o| if m >= o.length m else o.length end end print "\nThe biggest sentence is ", (@char), " characters long." end def smallest? @char = @reg.inject(@reg[0].length) do |m,o| if m <= o.length m else o.length end end print "\nThe smallest sentence is ", (@char), " characters long." endend e = Evaluator.new("words.txt")e.smallest?e.average?e.biggest? --Alex Combashttp://noodlejunkie.blogspot.com/