TL;DR: I am advertising pol2dom: a tool to convert a set of problems prepared in Polygon into a DOMjudge contest.
The whole process is automated: downloading the Polygon package, converting it into a DOMjudge package, and uploading the DOMjudge package to a DOMjudge server.
If you are organizing a contest that uses DOMjudge, I invite you to give pol2dom
a try.
Long story
Polygon is the platform used to prepare problems for Codeforces rounds (and, at least one year ago, for Codechef rounds). It has many issues but, as far as I know, it is the best platform for preparing competitive programming problems. It has a large number of checks that catch common mistakes, it is hosted online, it allows a coordinator to quickly review the preparation, and so on. As everyone, I would like to see Polygon improve (for example, with a decent UI), but there's nothing better, so we can complain but we will keep using it.
DOMjudge is an automated system to run ICPC-style programming competitions. It is currently used in various ICPC regional contests (NWERC, SWERC, NAC, SPPC, and others), at the world finals, and in the new Universal Cup. It is rather popular, actively developed, and I really like it.
Sadly, the package of a problem created with Polygon is not compatible with DOMjudge, and even if it was, a lot of annoying clicks would be required to download it from polygon, save it somewhere, and upload it to a DOMjudge instance; multiply everything by the number of problems in an ICPC contest.
Here comes pol2dom, a python tool that downloads problems from polygon, converts them into the DOMjudge format, and uploads the result into an instance of DOMjudge. All of that in a single command! If you want to know more about this tools (for example, the fact that it supports testlib, or that it supports interactive problems, that it supports balloon colors and puts a balloon with the right color in the statement...), I suggest you to read the README.
It was used for SWERC 2022 and SWERC 2023. It has a decent documentation that should allow anyone to use it without going crazy. Without false modesty, it is much better than other tools with similar goals and similar names: polygon2domjudge, poly-to-dj, another polygon2domjudge. One may argue that there are alternatives to Polygon that are compatible with the DOMjudge format (e.g., BAPCtools or problemtools). These alternatives are less powerful and way less used than Polygon.
I will keep this blog in the recent actions for a couple of days with the usual tricks if it receives no comments. Up
Fantastic work! What about CMS btw...
As the admin & chief judge of the Universal Cup, I uploaded all the ucup contests to the DOMjudge system. Most of the contests were prepared using Polygon, so we have a significant need for the Polygon to DOMjudge tool.
The polygon2domjudge tool is great, but your more automated tool sounds even more powerful. Thanks for your excellent work!
By the way, what do you think about contributing testlib patch to the main version under
#ifdef DOMJUDGE
as it's done with customizations for a couple of other testing systems?Looks like a good idea, I'll do it.
I used this tool, but reported this error.
File "/home/weiqt/DomJudge/pol2dom/p2d/tex_utilities.py", line 153, in compile_document_template 'HEADERIMAGE': params['header_image'], KeyError: 'header_image
I will soon take care of it, thanks for letting me know.
Shall be fixed.