Проверка отдельных тестов, например InterviewStreet.com
Я построил свой собственный онлайн-судья для размещения Intra-College Programming Contest
Судья похож и так же хорош, как SPOJ, Codechef, UVA и т. Д. В настоящее время мой онлайн-судья использует ту же логику, что и вышеупомянутые три веб-сайта, чтобы проверить, является ли ответ Correct(Accepted) or Wrong
То есть, он запускает пользовательскую программу против стандарта official test cases
и сравнивает выходной файл, сгенерированный пользовательской программой, с standard(expected) output file
Когда выходной файл пользователя соответствует ожидаемому выходному файлу, вердикт correct answer
еще Wrong Answer
,
Теперь я хочу добавить функцию Individual test case scoring system
как https://www.interviewstreet.com/. Пользователю начисляется балл на основании количества пройденных (принятых) тестовых случаев. [См. рис. выше]. Я не могу придумать эффективный метод / способ его реализации.
Мое начальное вторжение:
Поместите каждый тест (если предположить, что всего T тестовых случаев) Входные данные в T отдельных входных файлах (in1.txt, in2.txt, in3.txt,... inT.txt) и ожидаемые выходные данные в других T отдельных файлах (out1.txt, out2.txt, out3.txt,.... outT.txt) и запустите пользовательскую программу T раз, по одному для каждого входного контрольного примера (входных файлов).
Но это звучит не очень хорошо. Когда количество тест-кейсов T
большие, то Compilation Server будет очень медленным, так как пользовательская программа должна запускаться T раз.
Пожалуйста, предложите мне быстрый и эффективный способ внедрения индивидуальной системы подсчета тестов.