How do I create a question?

All CodeCup questions are ultimately just JSON which complies with the following spec:

Challenge JSON

That said, there are two ways to author that JSON:

  1. You can write a .json file, or...
  2. You can write a program which generates JSON, and outputs it to stdout

Option (2) is preferred, because it means we can repeat questions without worrying about the answers being available by a clever Google search. Most CodeCup questions are now using option (2).

Have a look at all the CodeCup Questions (if you're on the CodeCup team), or take a look at some example questions (if you're not on the CodeCup team).


What types of questions do people usually write?

(e.g. "This three-letter acronym is an asymmetric encryption algorithm invented before 2000.")

These are usually IRL tasks, and can range from short to extensive tasks. Usually, to get the flag, people need to email a submission to codecup@srnd.org and we'll reply with the flag.

(e.g. "Write and record a 30-second song about CodeDay, and email it to codecup@srnd.org")

Note that we don't support running code to test for a correct output, like many traditional programming competitions. There has to be a defined output which participants cannot arrive at by hand.

(e.g. any question on Project Euler)

Sometimes this might also involve cracking a message encyphered with an ancient cypher, or a trivially small RSA key. (This also includes cracking a hash, but we usually only have one of those questions each time for obvious reasons.)

(e.g. "My message is [...], and here is the code I used to encrypt it. What is the flag?")