There are some questions requiring distinct and consistent output. It's obvious what they mean for submissions printing to stdout. But how does that apply to the return values of functions?
For example, in Python, if a function always returns
1 for one case and
"a" for another, we could say they are distinct and consistent. But what if it returned
lambda:1? The problem is,
(lambda:1) == (lambda:1) is false. And their string representations could change if run again.
If that shouldn't be acceptable, it would be difficult to justify how non-constant, non-static C strings are consistent, as they are technically pointers which may have different values even if the strings are the same.
If that should be acceptable, how should it be defined exactly? Someone could think it's a good idea to create two instances of a class to represent two different results. But in other cases, someone may prefer generating even the classes on the fly.
Should we have a standard for all cases or make it flexible? And what would be acceptable exactly?
If we use the simple approach to allow writing their own comparison functions, it would leave a loophole that they simply return the input and do everything in the comparison function.