From: James Edward Gray II Date: 2006-08-28T01:16:18+09:00 Subject: Fwd: Ruby Quiz Submission --Apple-Mail-1-147031062 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Begin forwarded message: > From: William.B.Henderson-Frost@Dartmouth.EDU (William B. Henderson- > Frost) > Date: August 25, 2006 1:49:55 PM CDT > To: submission@rubyquiz.com, William.B.Henderson- > Frost@Dartmouth.EDU (William B. Henderson-Frost) > Subject: Ruby Quiz Submission > Reply-To: William.B.Henderson-Frost@Dartmouth.EDU (willhf) > > # My first ruby quiz solution! > # -- also included as an attachment > > # William Henderson-Frost > # Ruby Quiz 92 > > class DayRange > > Days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', > 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', > 'Saturday', 'Sunday'] > > def initialize(*args) > @days = [] > args.each do |arg| > raise ArgumentError unless (Days.include?(arg) or > (1..7).include?(arg)) > end > (0..6).each do |i| > if args.include?(i+1) or args.include?(Days[i]) or > args.include?(Days[i+7]) > @days.push(i) > end > end > end > > def to_s() > print_days, i = [], 0 > while i < 7 > 7.downto(i+2) do |x| > if @days & (i..x).to_a == (i..x).to_a > print_days.push(Days[i] << "-" << Days[x]) > i = x + 1 > break > end > end > print_days.push(Days[i]) if @days.include?(i) > i += 1 > end > return print_days.join(", ") > end > > end > > > puts DayRange.new('Thu', 5, 'Monday', 2, 'Wed', 7, 'Saturday').to_s --Apple-Mail-1-147031062 Content-Transfer-Encoding: 7bit Content-Type: application/octet-stream; x-unix-mode=0666; name=DayRange.rb Content-Disposition: attachment; filename=DayRange.rb # William Henderson-Frost # Ruby Quiz 92 class DayRange Days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] def initialize(*args) @days = [] args.each do |arg| raise ArgumentError unless (Days.include?(arg) or (1..7).include?(arg)) end (0..6).each do |i| if args.include?(i+1) or args.include?(Days[i]) or args.include?(Days[i+7]) @days.push(i) end end end def to_s() print_days, i = [], 0 while i < 7 7.downto(i+2) do |x| if @days & (i..x).to_a == (i..x).to_a print_days.push(Days[i] << "-" << Days[x]) i = x + 1 break end end print_days.push(Days[i]) if @days.include?(i) i += 1 end return print_days.join(", ") end end puts DayRange.new('Wed', 5, 2, 1, 7, 'Saturday').to_s --Apple-Mail-1-147031062 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed --Apple-Mail-1-147031062--