Next generation of VIVA: vanb’s Input Verification Assistant

Jump to: navigation, search

Next generation of VIVA: vanb’s Input Verification Assistant

(Abstract) David Van Brackle
Chief Judge, Southeast USA Region

Each year, at every ICPC contest across the globe, the contest’s Chief Judge is tasked with constructing a problem set, and with it, the Judge’s Data that will be used to test contestants’ submissions. Ensuring the accuracy of this data can be a challenge. Many of the judges write solving programs, to confirm the validity of the judge input and output, but even still, there are issues that can go undetected. Extra spaces, blank lines, values outside of specified ranges, and so on, can creep into the judge input. The judges are mainly former competitors who write very robust programs, which are largely immune to troubles caused by such formatting and constraint errors. However, these kinds of issues can cause problems with competitor’s code during the contest, causing, at best, extra effort and delays by the judges during the contest, and at worst, incorrect judge responses.

Many regions develop programs in a standard programming language to verify the correctness of their judge data. Indeed, the Kattis contest control system requires an input format validator for every problem. But, while these programs reduce the risk of data errors, they can be subject to the same sorts of oversights as judges’ solving programs.

VIVA is a program to help verify that judge input conforms to the standards of a given contest, and that the data falls within the constraints specified in the problem statement. It reads a pattern specified in its own simple pattern specification language. It then reads input files, and determines if (and where) they violate the specified constraints.

VIVA was developed in 2010, and was introduced in a presentation at the CLIS in Orlando in 2011. It has undergone a great deal of improvement since that initial version was released, including documentation, bug fixes, enhanced capabilities, and new capabilities. This presentation will briefly introduce VIVA for those who are unfamiliar. It will then describe, in detail, the improvements that have been made to VIVA since the initial version was introduced in 2011. It will also describe ideas for further improvements to VIVA, and describe how any interested party can access VIVA, and provide feedback.