Der ProCup geht dieses Jahr in die zweite Runde und unser Thema ist: Musik. Auch diesmal wird es wieder eine Qualifikationsrunde und eine Finalrunde an der Universität Trier geben.


Wer kann teilnehmen?


Du bist Schülerin oder Schüler in einer der Klassenstufen von 9 bis 13 einer Schule in der Region Trier, dem nördlichen Saarland oder Luxemburg, dann kannst Du an unserem Wettbewerb teilnehmen. Dazu musst Du eine Aufgabe lösen und die Lösung online über diese Webseite einreichen.


Wie kann man teilnehmen?


In diesem Jahr wird es zwei Gruppen geben:
Diejenigen mit Programmiererfahrung (Wizards) können fertige Programme in Java oder Delphi einreichen, und wer noch keine Erfahrung mit Programmiersprachen hat (Novices), hat die Möglichkeit, eine schriftliche Beschreibung des Lösungsverfahrens (Algorithmus) einzureichen.


Aufgabenstellung in der Qualifikationsrunde


Lena will mit ihren Freunden eine Party feiern. Bei der letzten Party haben sich ihre Gäste über die Auswahl der Musik beschwert. Damit es dieses Mal besser läuft, hat Lena eine Idee. Jeder ihrer Gäste darf eine Liste mit Lieblingsliedern (Titel, Interpret, Dauer) angeben. Lena will dann eine faire Playlist für ihren MP3-Player erstellen, so dass insgesamt ungefähr 60 Minuten Musik gespielt werden. Dabei soll der Anteil der Musiktitel jedes einzelnen Gastes an der Gesamtdauer etwa gleich sein. Außerdem sollen die Titel gleichmäßig verteilt sein, d.h. dass zwischen zwei Titeln, die für einen Gast gespielt werden, immer ungefähr der gleiche zeitliche Abstand liegen soll. Lena weiß, dass Du Dich gut mit Computern auskennst und bittet Dich, ihr ein kleines Programm zu schreiben, das ihr beim Erstellen der Playlist hilft.
Hier kannst Du Dir die Liste mit Liedern, die Lena von ihren Gästen eingesammelt hat, herunterladen:

songtitel.txt



Novices


Entwirf einen Algorithmus, der beschreibt, wie der Computer beim Generieren der Playlist vorgehen soll. Das heißt, Du sollst die Schritte angeben, die der Computer beim Berechnen der Playlist abarbeiten muss. Zusätzlich kannst Du Deine Lösungsidee mit einer Grafik illustrieren. Dein Algorithmus kann sowohl in Pseudocode als auch in natürlicher Sprache formuliert sein.
Falls du nicht genau weißt, was das ist, kannst Du Dir hier die Beschreibung eines Algorithmus anschauen:

Der MinSort-Algorithmus ( .pdf-Datei)



Wizards


Schreibe ein Programm, das eine Playlist berechnet, die die Anforderungen von Lena erfüllt. Hierzu kannst Du entweder die Programmiersprache Java oder Delphi verwenden.

Java - Als kleine Hilfestellung stellen wir Dir eine Klasse (DataReader.java) mit Funktionen zur Verfügung, die eine Playlist aus einer Textdatei einlesen können. Außerdem bieten wir allen, die die Aufgabe "objektorientiert" lösen möchten, die Klasse Song zur Verwaltung der einzelnen Lieder an. Die Klasse Song enthält auch ein Beispiel für eine solche objektorientierte Lösung: Der MinSort-Algorithmus aus der Novice-Aufgabe ist in der Funktion sort(Song[]) objektorientiert gelöst. Unter dem Menüpunkt "Links" findest Du Verweise zu Webpages, auf denen Du Java-Entwicklungsumgebungen herunterladen kannst.

Delphi - Hier bieten wir als Hilfestellung eine Unit (Project1.dpr) mit Prozeduren und Funktionen zur Verfügung, die eine Playlist aus einer Textdatei einlesen, eine solche Playlist sortieren und sie auf dem Bildschirm ausgeben können. Auch hier wurde zum Sortieren der MinSort-Algorithmus verwendet. Unter dem Menupunkt "Links" findest Du einen Verweis auf Turbo Delphi 2006, das Du kostenlos herunterladen und installieren kannst. Wir werden diese Delphi-Version auch für die Finalrunde verwenden.

Falls Du unsere Hilfestellung nicht benutzen möchtest, kannst Du aber natürlich gerne Deine eigenen Klassen und Funktionen programmieren.



Aufgabenstellung in der Endrunde


Die Schüler, die die besten oder interessantesten Lösungen eingereicht haben, werden zur Finalrunde an die Universität Trier eingeladen. Hier müssen sie dann innerhalb von 2 Stunden eine vorgegebene Aufgabe lösen und ein Plakat/Poster erstellen, auf dem sie ihre Lösung beschreiben. Gleichzeitig ist ein Rahmenprogramm für die Eltern geplant. Die Plakate werden aufgehängt, so dass die Eltern, Besucher, aber auch die Juroren zu den einzelnen Schülern gehen und diese zu ihrer Lösung befragen können.


Preise


In der Finalrunde wird für jede Klassenstufe und jede Gruppe ein Gewinner oder eine Gewinnerin ermittelt, die jeweils einen Apple ipod als Preis erhalten. Außerdem gibt es Buchpreise, und von der Firma Embarcadero wurden uns Softwarelizenzen für aktuelle Entwicklungsumgebungen für Delphi oder Java, sowie für die Schule mit den meisten Preisträgern das Paket "Delphi - class in a box" (Klassenlizenz, Kursbuch, Handreichungen, etc.) als Preise zur Verfügung gestellt.

Ein Programmierwettbewerb für Schülerinnen und Schüler der Klassenstufen 9 bis 13

Startseite Aufgabenstellung Finalrunde Links Einreichung Impressum