Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03345.jsonl.gz/984

Daniel Graf
Programmieren als Wettbewerb?
Die ACM (association for computing machinery) kürt neben dem Turing Award Gewinner jedes Jahr auch das Team der besten Informatikstudierenden im algorithmischen Programmieren. Dies im Rahmen des ICPC, dem International Collegiate Programming Contest [1]. Jährlich nehmen weltweit Tausende von Dreierteams an regionalen Wettbewerben teil und kämpfen um einen der begehrten Plätze am Weltfinal.
Die ACM-Kommission des VIS organisiert jeden Herbst den lokalen Ausscheidungswettbewerb an der ETH zusammen mit der EPFL. So trafen sich am späten Samstagmorgen des 12. Oktober eine Studentin und 20 Studenten um den Tag mit Knobeln und Coden zu verbringen. Wer die Vorlesungen ACM-Lab oder Algolab besucht hat, kennt das Format: In fünf Stunden gilt es möglichst viele Programmierrätsel zu lösen und zu implementieren. Jeder für sich, ohne Hilfsmittel oder Internet. Als Vorwissen reicht aus, was in ‘Datenstrukturen & Algorithmen’ behandelt wird. Viele Probleme erfordern einen Standard-Algorithmus (Breitensuche, Dijkstras kürzester Pfade Algorithmus, minimaler Spannbaum, …), jeweils kombiniert mit einem cleveren Twist. Programmiert wird in C/C++ oder Java mit den jeweiligen Standard-Libraries als Starthilfe.
Mir lief es gut, die ersten fünf Probleme wurden auf Anhieb ‘accepted’. Doch bei der DP-Aufgabe (Dynamische Programmierung) schlich sich ein kleiner Fehler ein: Ziel war es zu zählen, wie viele Spielverläufe ein Fussballspiel mit einem Endresultat von X:Y bei Z Führungswechseln haben kann. Schliesslich fand ich den Bug und es reichte mir für den zweiten Platz, sodass ich mich mit den beiden Mathematik-Studenten Nikola Djokic und Johannes Kapfhammer für das erste ETH-Team qualifizierte. Für das zweite Team qualifizierten sich Kieran Nirkko (D-INFK), Jan Wilken Dörrie (D-INFK) und Marco Keller (D-ITET).
Team-Training: Kondition und Technik
Nun galt es, aus Einzelkämpfern ein Team zu formen. Fortan stand uns zu dritt nur noch ein Computer zur Verfügung, sodass wir uns gut absprechen mussten, wer wann was codet und debugt, ohne dass sich sechs Hände um die Tastatur streiten.
Während einer Woche übten wir täglich von 10 bis 15 Uhr. Die Trainings wurden organisiert von der VIS-ACM-Kommission in Zusammenarbeit mit Maxim Buzdalov und Fedor Tsarev (ihres Zeichens ACM ICPC World Champions von 2009 respektive 2008) von der University of Information Technologies, Mechanics and Optics (ITMO) in St. Petersburg. Die ITMO hat in den letzten paar Jahren die ACM ICPC Szene dominiert und die jährlichen Trainings mit ihnen sind für die ETH Teams immer sehr fördernd und fordernd zugleich. Sie haben einen grossen Teil zu den regionalen Erfolgen der letzten Jahre beigetragen. Während der Trainings sahen wir jeweils die Einsendungen der russischen Teams wie sie an den Contests geschahen, und konnten uns so virtuell mit ihnen messen.
An manchen Tagen lief es super – an anderen weniger. Das binäre Grading ist da gnadenlos. Solange die Einsendung nicht alle Testfälle korrekt und schnell löst, gibt es keinen Punkt. Nicht jeder hat eine so einfache Strategie wie das russische Top-Team letztes Jahr: “First, each of us solved three tasks. Then we solved the last one together.”
¡Hola Valencia!
Zuversichtlich und auch ein wenig aufgeregt bestiegen wir das Flugzeug und freuten uns darauf, für ein letztes Wochenende dem Züri-Nebel nach Valencia zu entfliehen.
Nach der Ankunft im Hotel erkundeten wir die Altstadt Valencias. Vorbei an der Stierkampfarena und der Kathedrale begaben wir uns auf die Suche nach Churros, einem spanischen frittierten Gebäck, das man in heisse Schokolade tunkt. Zum Abendessen trafen wir uns mit den beiden Teams der EPFL, um eine grosse Auswahl an Tapas zu teilen.
Der Samstag war dann der Vorbereitung auf den kommenden Wettbewerb gewidmet. Austragungsort des Southwestern Europe Regional Contest (kurz SWERC [2]) war die Universitat Politecnica de Valencia. 44 Teams aus Spanien, Frankreich, Portugal, Italien, Israel und der Schweiz waren angereist. Nach der Registrierung vertrieben wir uns die Zeit mit Karten spielen und erhöhten so die Anzahl D-INFK-Doktoranden, die Jassen und Tichu beherrschen. Nach den Eröffnungsansprachen folgten die beiden obligaten Vorträge: Ein Professor des dortigen Instituts erklärte uns den Unterschied zwischen SaaS (Software as a Service) und PaaS (Platform as a Service), bevor uns eine Facebook-Ingenieurin ihr Code-Review-System erläuterte. Am Nachmittag folgte ein Testlauf, damit wir das Wettbewerbs-System auf Herz und Nieren prüfen konnten. Und um am nächsten Tag richtig fit zu sein, liess unser Team gar das noble Contest-Dinner aus, um richtig ausgeschlafen zu sein.
Der Contest
Jetzt galt es ernst. Wir joggten zur Uni um richtig wach zu werden und nutzen die letzten zehn Minuten vor dem Start um alles aufzusetzen. Nikola codete schon mal den Maximum Flow auf Vorrat, denn der kommt doch sowieso immer dran – er sollte Recht behalten.
Die zehn Aufgaben waren spannend und herausfordernd. Wir berechneten die aktuellsten Themen aus der Blogosphäre, die Parität der Anzahl Nullen von n!, einen optimalen Stundenplan und vieles mehr. Nach vier von fünf Stunden schwebten über unserem Monitor sechs Ballone und wir lagen in Führung. Nur das erste Team der Universitat Politècnica de Catalunya (kurz UPC [3]) hatte bis dahin ebensoviele Aufgaben gelöst.
Während der letzten Stunde blieb die Rangliste eingefroren. Wir sahen nicht mehr woran die anderen Teams noch arbeiteten und somit blieb es spannend bis am Schluss. Wir lösten kurz darauf ein siebtes Problem, doch am achten bissen wir uns die Zähne aus. Es galt einen planaren Graphen mit vier Farben zu färben [4]. Ein simples Backtracking war zu langsam und so versuchten wir es auch noch randomisiert. Glücklicherweise hatte ich in der Vorlesung über randomisierte Algorithmen von Prof. Angelika Steger gerade kürzlich von einer Abwandlung von Schönings 3-SAT-Algorithmus auf Färbeprobleme gehört. Wir kombinierten beides, optimierten und schickten mit diversen Random Seeds ein, bis 24 Sekunden vor Schluss die 16. Einsendung akzeptiert wurde.
Auch das UPC-Team hatte insgesamt acht Probleme gelöst, sodass wir auf dem zweiten Platz der Schlussrangliste zu liegen kamen. Damit haben wir uns, zusammen mit dem UPC-Team, für das Weltfinale qualifiziert. So dürfen wir nächsten Sommer ins russische Jekaterinburg reisen, um dort die ETH und damit Südwesteuropa zu vertreten.
Insgesamt fiel die Schweizer Bilanz äusserst erfreulich aus: Drei der insgesamt zwölf Medaillensätze gingen in die Schweiz. Die ETH holte Gold und Bronze auf den Plätzen 2 und 12 und die EPFL gewann eine Silbermedaille mit Platz 5 und verpasste Bronze mit Platz 13 nur haarscharf. Grund genug für eine feines Essen in der Stadt: In einem Felsenkeller wurde uns beste spanische Ente serviert.
Meer und Architektur
Bis zum Rückflug blieben uns noch ein paar Stunden. Für einen Spaziergang an den Strand reichte es allemal. Zum Baden war das Mittelmeer schon etwas zu kalt, aber es war ideal zum Jassen im Sand. Auf dem Weg zum Flughafen machten wir noch einen kurzen Abstecher zur Ciudad de las Artes y de las Ciencias. Dieser moderne Museumskomplex steht im Flussbett des in den 1990er Jahren trocken gelegten Río Turia. Entworfen wurden die extravaganten Gebäude vom valencianischen Architekten Santiago Calatrava, welcher übrigens an der ETH Zürich Bauingenieurwesen studierte und promovierte. Besonders bekannt sind seine skelettartigen Tragwerke und andere der Natur entlehnte Formen.
Fazit
Wir hatten ein tolles Wochenende, viel Spass und erfreuliche Resultate. An dieser Stelle möchten wir uns ganz herzlich bei unseren Coaches Jan Hązła und Akaki Mamageishvili und bei allen weiteren fleissigen Mitglieder der ACM-VIS-Kommission [5] bedanken, welche unsere Teilnahme erst ermöglichten.
Wenn du interessiert bist, nächstes Jahr selbst mitzumachen oder mitzuhelfen, kontaktierst du am besten das ACM-Komitee unter <email-pii>. Es lockt eine Reise an den SWERC 2014 in Porto!
Links:
[1] http://icpc.baylor.edu
[2] http://swerc.eu
[3] http://www.upc.edu
[4] http://en.wikipedia.org/wiki/Four_color_theorem
[5] http://www.vis.ethz.ch/en/about/committees/acm