It's difficult to test solutions to interactive problems during or after a contest. For non-interactive problems, I usually redirect input from a file. For interactive problems I have to type out input manually, since input depends on output. If the interaction is long, this can take time.
A more automated way will require 2 more programs:
- A judge program with whom our solution will interact.
- A program which connects
stdout
of solution tostdin
of judge andstdout
of judge tostdin
of solution. I call this program a 'croupier'.
The judge program will have to be written by the user each time since it's problem-specific. But the croupier is generic and can be reused.
My implementation of the croupier, apart from connecting inputs and outputs of the two programs, also prints the output from each program so that it's easier to debug.
You can find my implementation here: https://github.com/sharmaeklavya2/croupier