Given a set of scores, where the first is lower than the second, returns details for how to rank scores.
This function is in the IO
monad since it may require randomness, and it may output status messages while solving,
particularly if in Verbose mode.