Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Tips on Writing a Golf Challenge

by chipmunk (Parson)
on May 23, 2001 at 07:55 UTC ( #82470=monkdiscuss: print w/replies, xml ) Need Help??

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.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: monkdiscuss [id://82470]
Approved by root
[marto]: the ticketing system does not accept calls via email, nor has it a working API. It's tied into Active Directory for authentication and the Solaris boxes aren't on that domain
[Corion]: The one thing I haven't figured out a solution to is how to get an edge-trigger instead of sending an email every 5 minutes if the usage is above 90%. I want one mail when it goes over 90% but no more emails as long as it stays between 90% and 95%.
[Corion]: marto: Clever! ;)
[Corion]: You can only reach me by pager
[Corion]: Maybe the solution would be to launch a cron job every minute that takes two measurements a minute apart and sends a mail if the usage is below on the first and above threshold on the last measurement
[marto]: that's essentially it :)
[marto]: I think the long term solution would be to have sysadmins that do their job, so I don't have to do everything :P
[marto]: they already have an entire BMC patrol system, which they disabled, because it was sending out spurious messages. So rather than fix the issue, or even find out what it was, they turned it off. No messages, can't be any problems, right?
[Corion]: marto: But having open tickets / incidents increases the pressure on them ;) Of course, likely your contract / SLA specifies an upper limit for the number of incidents :-D
[Corion]: marto: Ow ...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (7)
As of 2017-01-24 10:12 GMT
Find Nodes?
    Voting Booth?
    Do you watch meteor showers?

    Results (203 votes). Check out past polls.