Die Mentorengruppe Diskrete Mathematik schreibt aus:
Programmierwettbewerb 2012
|
Gegeben ist ein 3D Tetris Spiel: Auf ein rechteckiges Spielfeld fällt eine Menge von achsenparallelen Quadern, die nicht mehr horizontal bewegt oder gedreht werden können. Sie kommen zum Stehen, sobald sie einen anderen Quader oder das Spielfeld berühren. Ziel des Spiels ist es den höchsten Punkt der Anordnung zu finden.
Teilnehmen können Studierende der Universität Bonn. Die
Abgabe kann in Gruppen von bis zu drei Personen erfolgen. Preise für die
Siegergruppen sind Fachbücher im Gesamtwert von 200 €.
Die Bewertung eines eingereichten Algorithmus richtet sich nach der Geschwindigkeit der Implementierung auf vorgegebenen Testinstanzen. Die Abgabe muss vollständig kommentiert sein und aus den Kommentaren sollte der theoretische Ansatz ersichtlich sein.
Das Programm liest von der Standardeingabe.
Die erste Zeile der Eingabe besteht aus drei Zahlen A, B, N
∈ ℕ+, wobei A die Länge und B die Breite der rechteckigen
Plattform sowie N die Anzahl der Quader angibt. Es gilt: N ≤
400000 und A,B ≤ 10000.
Es folgen N Zeilen, welche die Quader in ihrer Fallreihenfolge beschreiben. Jede dieser Zeilen besteht aus fünf Zahlen a, b∈ℕ+ h, x, y∈ ℕ0, wobei a die Länge, b die Breite und h die Höhe des Quaders angeben. Sie fallen achsenparallel zur rechteckigen Plattform auf die Fläche (x, x+a) × (y, y+b). Es gilt: x, x + a ≤ A, y, y + b ≤ B und h ≤ 10000.
Nachdem alle Quader heruntergefallen sind, soll das Programm die Höhe des höchsten Punktes ausgeben sowie eine neue Zeile beginnen.
Die Abgabe muss in C oder C++ geschrieben und konsistent
formatiert sein. Sie muss korrekt arbeiten und ohne Fehlermeldung mit gcc
/g++
(Kompilerflags: -O2 -Wall -W -pedantic
) kompilierbar sein. Sie muss auf
einem gängigen Linuxsystem funktionieren. Es dürfen mit Ausnahme der
Standard C/C++ Library keine externen Bibliotheken eingebunden werden. Der
Speicherplatz ist durch 4 GiB begrenzt. Es wird empfohlen, das
Speichermanagement mit Hilfe des Tools valgrind
zu überprüfen.
Einsendungen ohne Speicherfehler erhalten Sonderpunkte.
Zusätzlich zum dokumentierten Code wird eine kurze Ausführung (weniger als eine Seite)
über die gewählten theoretischen Ansätze verlangt.
Die Abgabe muss bis zum 24. März 2012 um 23:59 Uhr per E-Mail an mentoren@or.uni-bonn.de erfolgen.
Eingabe:
4 5 3 2 2 1 1 1 2 2 4 2 2 2 1 3 0 3
Ausgabe:
5
Die Mentoren werden am Donnerstag den 26. Januar 2012
das Wettbewerbsthema ab 18 Uhr (s.t.) im Konferenzraum (2. OG) des Arithmeums
genauer erläutern. Hier bietet sich die Möglichkeit detaillierte Fragen
persönlich zu klären. Alle interessierten Studenten sind hierzu herzlich
eingeladen.
Bei sonstigen Fragen kann sich jederzeit an mentoren@or.uni-bonn.de gewandt werden.
Einige Instanzen zum Testen gibt es HIER. Die zugehörigen Lösungen stehen unter FAQ.
Die Ausschreibung gibt es hier als PDF zum Download.
Fragen bezüglich der konkreten Abgabe:
Zulässigkeit von C++ / Verständnis:
cat inst.1 | ./tetris.outübergeben werden?
Fragen bezüglich der Instanzen:
inst.1 : 1354992508 inst.2 : 931154263 inst.3 : 506236115 inst.4 : 80912382 inst.5 : 1280833342 inst.6 : 858050478 inst.7 : 429487984 inst.8 : 6130530 inst.9 : 1204261818 inst.10: 779963129
This document was translated from LATEX by HEVEA.