I think it's great to see all these golf challenges in the Monastery lately. (To those who frown on Perl golf; remember, it's just for fun, this code will never be in production!)

Here are a few tips I've come up with on writing a Perl golf challenge.

Describe the problem as clearly as possible. How frustrating it is to work on a great solution that turns out to solve the wrong problem! Watch out for ambiguous words like 'numbers' (is that integers, reals, whole numbers...?) or 'words' (is that alphanumerics, non-whitespace, ...?).

Explain any boundary cases. Ensure an even playing field by making sure everyone has to do the same work. Of course, something will turn up that you didn't think of ("but yours fails if the list is empty...").

Provide sample input and output. You can clarify the challenge and provide a test case to all the players at the same time. If the example can be pasted directly into a test script, even better!

Show a solution. The same benefits as an example, plus you can demonstrate how you want the subroutine or program to be called. Of course, it doesn't have to be your best solution...

Be ready to clarify. Some joker will have a question he wants answered or an ambiguity he wants resolved before posting his solution. Whan this happens, pick the answer you like best and update the challenge.

Keep on golfing! First round is on me at the 19th!

Replies are listed 'Best First'.
Re (tilly) 1: Tips on Writing a Golf Challenge
by tilly (Archbishop) on May 23, 2001 at 18:17 UTC
    All good, but a few more.

    Keep it simple. This is golf. There is a fuzzy boundary between golf and a real program. Detailed specs definitely cross that boundary.

    Be sure there is a solution. Even if you don't show it, the mere act of writing your own solution will clarify questions and make sure that your problem is doable. There is a fine line between problems with minor tricks and NP-complete brute force searches.

    Two solutions are even better. If you can think of at least 2 ways someone might reasonably approach the problem, then the golfing course is likely to be more interesting.

    Drop boundary cases if possible Often careful handling of boundary cases takes more work than the main algorithm. The main algorithm is usually the more fun golf challenge.

    Wait before posting Too many golf problems dilutes all of them. Wait until nobody else is posting problems, then post yours.