As our help center likes to put it:
All solutions to challenges should:
- Correctly implement the required specification.
- Be a serious contender for the winning criteria in use. For example, an entry to a code golf contest needs to be golfed, and an entry to a speed contest should make some attempt to be fast.
Per our policy about answers not meeting the challenge specification, non-serious contenders are subject to deletion.
A serious contender is a submission which makes a serious effort towards optimizing the submission's score within the chosen language(s) and other choices (such as algorithm choice or optional restrictions/bonuses taken).
That covers different algorithms (think brute force vs closed form, each of which might have a shorter implementation in a given language), bonuses (now frowned upon anyway).
Restrictions are trickier. Self-imposed restrictions like a clean exit or avoiding warnings seem to be accepted in general, but a new one – input validation – has come up in the last couple of days. Specifically, I'm talking about these answers:
Both challenges imply or even explicitly state that the input will be "valid" (i.e., obey a certain format), yet the author decided to validate the input in his answers because he considers code without input validation incomplete. While that may very well be true for production code, the challenge specifications say otherwise.
That begs the question: What kind of self-imposed restrictions should be allowed for a serious contender in code golf competitions, even when adhering to them inevitably elevates the byte count?
Realistically, I don't expect a clear-cut division as a result of this meta discussion, but coming up with a few necessary or sufficient conditions (or at least partial white- and a blacklists) that cover most cases should be possible.