Watch them Fight! Creativity Task Tournaments of the Swiss Olympiad in Informatics

Samuel GRÜTTER, Daniel GRAF, Benjamin SCHMID
2016 OLYMPIADS IN INFORMATICS  
As part of the qualification process for the Swiss Olympiad in Informatics, the contestants are each year confronted with one "Creativity Task". Unlike typical problems in programming competitions, creativity tasks usually do not have an optimal solution, and are often adaptations of popular board or computer games. After receiving all submissions, a tournament is organized, where the students can watch how their programs play interactively against each other, and points are awarded to the
more » ... rs according to the tournament ranking. We present and discuss this task format in general, as well as the specific creativity tasks of the past 10 years, accompanied by an online archive of the task descriptions, sample solutions and game servers. Moreover, we describe our task selection process and criteria, the task creation process, and the experience gained and best practices established in the past years. Finally, we present the many advantages of this task format, showing why we think it is a refreshing alternative to the common IOI-style tasks given in most national selection rounds. At the start of each year's first round, the following material for the creativity task is published on the SOI website: The • task description, describing the rules of the game and its parameters. Depending on the game, these could include, for instance, width and height of the playing field, or a map of the playing field, the number of players, the initial amount of money/food of each player, etc. The task description also specifies the communication protocol between the bots and the game server (see below), which defines how the bots have to communicate their actions and how they are informed about the other bots' actions. All communication is done via standard input/output. A • game server, a program written by the task authors, which launches the bots, communicates with them according to the protocol and keeps track of the game state. It informs the bots about all the relevant changes and prints a log of each action and state change. The server also acts as a judge that can terminate bots that drop out of the game or take too long to answer. If the interaction protocol is easy to read, the game server can also allow for human players that type in their commands interactively. This way, the participants can play against their own bots by hand. Some • sample bots in various programming languages. These bots follow all the rules of the protocol, but they just pick a random move in every step. The participants can base their solutions on these sample bots to quickly learn how to implement the protocol and input/output. Moreover, they can evaluate their bots by letting them play against the sample bots. A • visualization, which reads the log produced by the game server, and displays a graphical animation of the game. For some of our tasks, the game server already provides a rudimentary text-based visualization of the game.
doi:10.15388/ioi.2016.05 fatcat:h3yuli3shfftlepytp6nf5zrpy