I have just recently posted my first challenge and because I wanted to give all languages equal chances, I stated that the input variables are defined in the current scope already, so people wouldn't need to grab user input or write functions with params. However, people do exactly that! Is this a rule I don't know about yet? Something like "Return an anonymous function that solves the problem" instead of "Solve the problem"? The problem becomes even harder considering many languages have interactive interpreters that don't require you to write "print", "echo" or the like (think of Python, JavaScript).

Should I comment on the answers so people change their lambdas to prints?

  • 5
    \$\begingroup\$ We have a default for input and output methods, straying from this when writing a challange isn't against any rule, but it's usually not recommended. \$\endgroup\$
    – ATaco
    Commented Apr 21, 2017 at 6:12
  • \$\begingroup\$ It's not against any rule, but if you disobey them, people will ignore you and follow them anyway. Same for things like allowing standard loopholes. \$\endgroup\$
    – Pavel
    Commented Apr 21, 2017 at 6:19
  • \$\begingroup\$ Technically those doing that, or at least, doing that in defiance of the rules, are breaking the actual sight rules, and should be flagged for NaA \$\endgroup\$
    – ATaco
    Commented Apr 21, 2017 at 6:26
  • \$\begingroup\$ Since most people seem to be aware of these rules, I have rephrased the challenge and linked the post you mentioned. Thanks @ATaco \$\endgroup\$
    – Hugo G
    Commented Apr 21, 2017 at 6:27
  • \$\begingroup\$ @ATaco: Intentionally breaking the rules is VLQ, not NaA. NaA is reserved for situations where the "answer" doesn't even approximately look like it could be an answer to the question (e.g. it's actually a comment, or it's completely offtopic). Of course, it can be deleted either way. \$\endgroup\$
    – user62131
    Commented Apr 24, 2017 at 23:43

1 Answer 1


The concept of "input variables" is actually less of an equalizer than you think. What about languages with no concept of variables, like brainfuck, or a Turing machine? There is a reason we use the standard I/O methods we do. Use of STDIN and STDOUT is practically universal, and using functions is a nice method for languages that have them. Both of these I/O methods are used in official programming contests around the world and across many sites. Variables, on the other hand, are scope-dependent. It's just not as great a method of handling "input" for solving a problem.

Now, about your specific challenge. Your specifications state:

Default input/output rules apply.

and you linked to the rules defined by consensus. One of these I/O methods (this one) with negative consensus (making it forbidden by default) is

Programs may take input by assuming it is stored in predefined variables.

meaning that your challenge specifications conflict themselves when you say not to define a function and to use variables instead.

In summary, there's a reason we use these defaults. You have the right to override them, but please be clear about doing so in your challenge description.

  • 1
    \$\begingroup\$ Thanks. I just edited the challenge to get rid of this contradiction. \$\endgroup\$
    – Hugo G
    Commented Apr 22, 2017 at 3:56

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .