Привет, Codeforces!
Задачи с открытыми тестами — тип задач в олимпиадном программировании, где тесты к задаче доступны для скачивания, а на проверку нужно сдать не код, а ответы на тесты. Обычно это NP-полные задачи с частичной оценкой за тест.
Бот принимает решения участников через чат в Telegram и передаёт их стороннему чекеру, который выставляет баллы за тест. Поддерживается наилучший балл по каждому тесту и таблица результатов. Баллы участников автоматически сохраняются, так что после перезапуска бота результаты не исчезнут. Исходный код и инструкция по настройке доступны в репозитории на GitHub.
Список изменений
Codeforces кое-как поддерживает, я 3 года назад вот такое выкладывал: https://codeforces.me/blog/entry/79771
Он с тех пор сильно лучше научился поддерживать, в настройках задачи появилась галочка "output only", которая позволяет сдавать zip-архив.
Я заливал на сборы к всероссу задачу 2014 года с открытыми тестами, все было хорошо, единственный прикол, который словил — в задаче было ровно 100 тестов по 1 баллу, а в zip-архив можно было сдать только тесты c 01.out до 99.out, т.к. маска, по которой проверяется содержимое архива требует, чтобы в имени было ровно две цифры. Писал MikeMirzayanov, но сейчас проверил — это так и не починили.
Ссылка на контест с этой задачей https://codeforces.me/group/LSkoyXa9Yw/contest/436281
Круто! В сочетании с чекером, выставляющим скоры, как у меня, получается, можно реализовать любую подобную задачу.
А 100 тестов вообще не проблема, ведь на Deadline / Pizza / Hashcode их порядка 10.