@admin
I have seen threads on Users voting for making the Long Challenges unrated. And Codechef admin replying they will not be unrated. Then how can we reduce the cheating in long challenges?
Well, I have some tips, which will actually be helpful in reducing Cheating in Long Challenges.
Before going through them, let us observe some things happening around:
Solutions are shared in Telegram groups.
If any challenge gets more than 200 submissions by the end of 4th day of contest, then no doubt the the submissions will cross 5000 by the end of contest.
Plagiarism detection is not up to the mark. Since the contest runs for 10 days, a user will have plenty of time to modify the solution he got from others, hence, they are not being caught in Plagiarism check.
When will a user share his/her solution with another person? Simply when he/she gets AC.
Here are the tips
Do not give the result of submission for any challenge. We can see that, if a user gets AC, then there is a chance that he/she will post his/her solution on some medium telling he/she got AC for his/her solution.
Let the ranklist be hidden. Reveal the ranklist at the end of contest.
Why will these tips work?
Before submitting any solution, A user can verify the code by running it against some test cases which are within the constraints. Hence, it can improve debugging skills. After gaining enough confidence about the solution, he/she can submit. Since time of submission is not a factor, it will be fine.
Why shouldn’t the result of solution be given after submitting?
Users share their solutions iff their solution gives AC or partial score. Hence, if they don’t know whether their solution is working or not, they’ll not share their solution.
Why freeze ranklist or hide ranklist?
Users can find their friends in the ranklist. If anyone of them gets higher score, then there is a chance that this user will get the solution from them.
Why am I starting this topic?
When I submit a solution and when I get AC, it gives me confidence.
When it gives me WA, it makes me think where I am missing the logic.
But if a person who is not much experienced in CP solves more challenges than me and if he/she cheated and was not caught by Plagiarism Detection, it gives me Depression.
I am not a newbie. I have another account where I am a four starrer. I don’t want to reveal my identity and hence I am using another account.
Amidst all these, I like the idea of locking down ranklist, just like ICPC does. But the idea of hiding the result of solutions is absolutely bad. How will I then know, if my solution is correct or not, has it received partial/full, or is it WA or TLE or anything. Any thoughts on this?
But think, if your result is given, won’t it lead to sharing of the AC solution. Of course, sincere people don’t leak answers and don’t seek answers, but 40% of the users participating in the long challenge are sharing their solutions just because they got AC.
Testing your solution against personally generated test cases will help you think out of the box. It will improve you a lot. Coz, generating small test cases where the algorithm may fail will help in debugging.
I don’t think it will help. Because how good coder you are, maybe 5 stars, 6 star or 7 stars too, debugging hard problems using self made tests will always be tough.You need to see the result.
Another counter result will be like this that, people will still share their solution and then match with random inputs with the codes, then the one which will provide the correct output, everyone will take that code.
P.S- You cannot stop.people unless people themselves dont understand. But yes, the locking of ranklist is good. Because I always get messages from my friends, if I solve some problem.
Do we have a better choice?
If yes, please post it here. If no, read the following.
Please think, generating your own test set and running your code against them will help you a lot. It will make you think out of the box.
And generating test cases is not a difficult task. Create a input.txt file and print the input into it. Then read the same file and write the output to another file output.txt.
Generate small test set and estimate the time complexity of the program. It will definitely make you think out of the box.
Don’t get me wrong, I definitely don’t like your idea of hiding submission verdicts
The reason being that it’s just annoying. People hash on TopCoder all the time for forcing people to write their own test generators, and we shouldn’t make it the same case here. Doing that for every single problem, and especially considering how weak the samples always are, seems like just a waste of time. Maybe it will stop cheating, but it will also drive many people away from the platform
showing results is always important, otherwise everyone has to write rigorous proof that there
solution is in fact the right one. just for the sake of cheaters hiding results is way too big of a price to pay. it wont certainly help in debugging. we debug when we know its wrong. there is a reason why no competition have this feature. though come first serve first, can be applied. so it`s better to focus on learning more in my opinion.