dario2994's blog

By dario2994, 18 months ago, In English

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

  • Vote: I like it
  • +160
  • Vote: I do not like it

»
18 months ago, # |
  Vote: I like it +16 Vote: I do not like it

Fantastic work! What about CMS btw...

»
18 months ago, # |
  Vote: I like it +36 Vote: I do not like it

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!

»
18 months ago, # |
  Vote: I like it +18 Vote: I do not like it

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?

»
7 months ago, # |
  Vote: I like it +10 Vote: I do not like 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