Ruby Quiz Submission

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)
          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

DayRange.rb (916 Bytes)

···

Begin forwarded message: