< :the previous in number
^ :the list in numerical order
> :the next in number
P :the previous artilce (have the same parent)
N :the next (in thread)
|<:the top of this thread
>|:the next thread
^ :the parent (reply-to)
_:the child (an article replying to this)
>:the elder article having the same parent
<:the youger article having the same parent
---:split window and show thread lists
| :split window (vertically) and show thread lists
~ :close the thread frame
.:the index
..:the index of indices
Ruby Quiz wrote:
> The three rules of Ruby Quiz:
>
> 1. Please do not post any solutions or spoiler discussion for this quiz until
> 48 hours have passed from the time on this message.
>
> 2. Support Ruby Quiz by submitting ideas as often as you can:
>
> http://www.rubyquiz.com/
>
> 3. Enjoy!
>
> Suggestion: A [QUIZ] in the subject of emails about the problem helps everyone
> on Ruby Talk follow the discussion. Please reply to the original quiz message,
> if you can.
>
> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>
> by Bryan Donovan
>
> If you've ever created a web application that deals with scheduling recurring
> events, you may have found yourself creating a method to convert a list of days
> into a more human-readable string.
>
> For example, suppose a musician plays at a certain venue on Monday, Tuesday,
> Wednesday, and Saturday. You could pass a list of associated day numbers to your
> object or method, which might return "Mon-Wed, Sat".
>
> The purpose of this quiz is to find the best "Ruby way" to generate this
> sentence-like string.
>
> Basically, the rules are:
>
> * The class's constructor should accept a list of arguments that can be day
> numbers (see day number hash below), day abbreviations ('Mon', 'Tue', etc.),
> or the full names of the days ('Monday', 'Tuesday', etc.).
> * If an invalid day id is included in the argument list, the constructor
> should raise an ArgumentError.
> * The days should be sorted starting with Monday.
> * Three or more consecutive days should be represented by listing the first
> day followed by a hyphen (-), followed by the last day of the range.
> * Individual days and the above day ranges should be separated by commas.
> * The class should number days (accepting Integers or Strings) as follows:
> 1: Mon
> 2: Tue
> 3: Wed
> 4: Thu
> 5: Fri
> 6: Sat
> 7: Sun
> * The class needs a method named #to_s that returns the day range string.
> Here are some example lists of days and their expected returned strings:
> 1,2,3,4,5,6,7: Mon-Sun
> 1,2,3,6,7: Mon-Wed, Sat, Sun
> 1,3,4,5,6: Mon, Wed-Sat
> 2,3,4,6,7: Tue-Thu, Sat, Sun
> 1,3,4,6,7: Mon, Wed, Thu, Sat, Sun
> 7: Sun
> 1,7: Mon, Sun
> 1,8: ArgumentError
>
> This is not intended to be a difficult quiz, but I think the solutions would be
> useful in many situations, especially in web applications. The solution I have
> come up with works and is relatively fast (fast enough for my purposes anyway),
> but isn't very elegant. I'm very interested in seeing how others approach the
> problem.
>
What about the handling of day ranges that wrap, such as 1, 5, 6, and 7?
Do you want Monday, Friday-Sunday, or the more logical Friday-Monday?