FAQ

Allgemein

Dürfen nur Studenten teilnehmen?

Nein, es darf jeder teilnehmen, ganz gleich ob Student oder nicht.

Wann werden die Aufgaben veröffentlicht?

Jede Aufgabe wird um 9 Uhr morgens (Passauer Ortszeit) veröffentlicht. Die erste Aufgabe wird am 01.12.2025, die letzte am 24.12.2025 veröffentlicht.

Muss ich eine Aufgabe innerhalb von 24 Stunden lösen?

Nein, alle Aufgaben können bis zum Ende des Jahres gelöst werden. Wann du eine Aufgabe löst hat keinen Einfluss auf die Bewertung.

Wie wird der Gewinner ermittelt, wenn es am Ende ein Gleichstand gibt?

Sollte es nach Ende des Adventskalenders mehrere Teilnehmer mit gleicher Punktzahl geben, werden die ersten drei Plätze durch eine Jury ermittelt.

Nach welchen Kriterien bewertet die Jury meine Abgaben?

Die Jury wird insbesondere auf folgende Kriterien achten:

  • Code-Stil: Die Jury sollte deinen Code lesen und verstehen können. Aussagekräftige Bezeichnungen und eine klare Strukturierung helfen viel!
  • Kommentare: Ein paar gut platzierte Kommentare helfen der Jury, dein Programm zu verstehen. Seitenweise Boilerplate-Dokumentation hingegen will keiner lesen. Falls du einen besonders cleveren Lösungsweg oder Algorithmus entwickelt hast, darfst du diesen aber auch durchaus etwas genauer beschreiben.
  • Eleganz: Abgaben, welche eine Aufgabe besonders effizient oder mit besonders wenig Code lösen, kommen bei der Jury gut an! Dein Code sollte natürlich trotzdem lesbar und verständlich sein.

Falls nötig, kann die Jury weitere Kriterien zur Bewertung heranziehen.

Wie werden Punkte vergeben?

Je nach Aufgabentyp können Punkte entweder statisch oder dynamisch vergeben werden. Weiterhin gibt es Aufgaben, bei denen für die Bewertung neben dem Bestehen der Testfälle noch weitere Kriterien erfüllt sein müssen.

Statische Punktvergabe

Jede Aufgabe hat eine Reihe von Testfällen mit denen eingereichte Lösungen ausgewertet werden. Jeder Testfall ist eine gewisse Anzahl an Punkten wert. Eine Aufgabe mit vier Testfällen mit jeweils 25 Punkten ist also insgesamt 100 Punkte wert. Besteht eine Abgabe drei dieser Testfälle, so wird die Abgabe mit 75 Punkten bewertet. Die Gesamtpunktzahl eines Teilnehmers ergibt sich aus der Summe der besten Abgaben für jede Aufgabe.

Dynamische Punktvergabe

Jede Aufgabe hat eine Reihe von Testfällen mit denen eingereichte Lösungen ausgewertet werden. Insgesammt bringt eine Aufgabe bis zu 100 Punkte, je nachdem aus wie vielen Testfälle sie besteht. Je mehr Teilnehmer die Aufgabe richtig lösen, desto weniger Punkte sind maximal erreichbar.
So wird die Bewertung berechnet:

Gesamte Abgaben (eine pro Teilnehmer) für das Problem: gesamt
Richtige Lösungen (eine pro Teilnehmer) für das Problem: gelöst
Der Abgeabefaktor (liegt zwischen 1 und 0) basierend auf den gelösten Testfällen: sf
Mindestpunkte für ein richtig gelöstes Problem: 50
Maximale Punkte für ein richtig gelöstes Problem: 100
Anteil richtiger Lösungen: sr = gelöst / gesamt
Problemfaktor: cf = 50 + (100 - 50) * (1 - sr)

Damit ist die Bewertung: Punkte = sf * cf

 

Gibt es auch Punkte auf nur teilweise gelöste Aufgaben?

Ja, auch wenn deine Abgaben nicht alle Testfälle bestehen, bekommst du Punkte für eine Aufgabe. Dafür wird jeweils die beste Abgabe herangezogen.

Programmausführung

Was ist der "Compiler Status"?

Der Compiler Status ist eine Zahl, die vom Compiler an das System gegeben wird, wenn der Compiler mit seiner Arbeit fertig ist. Ein Wert von 0 signalisiert, dass es keine Probleme gab. Andere Werte deuten auf Fehler beim Kompilieren hin.

Was ist der "Programm Status"?

Der Programm Status ist eine Zahl, die vom deinem Programm an das System gegeben wird, wenn es mit seiner Arbeit fertig ist. Ein Wert von 0 signalisiert, dass das Programm ordnungsgemäß beendet wurde. Andere Werte deuten auf einen Programmabsturz oder Fehler hin.

Welche Einschränkungen hat mein Programm?

Dein Programm darf pro Testfall nicht mehr als 250 Megabyte Arbeitsspeicher belegen und nicht länger als 60 Sekunden rechnen. Aus Gründen der Fairness solltest du auf "kreative" Problemlösungen verzichten, denn ein Fehler im Auswertungssystem hat einen negativen Einfluss auf alle Teilnehmenden.

Wie lange darf mein Programm laufen?

Dein Programm bekommt eine festgelegte Zeit, um einen Testfall zu bearbeiten. Diese Zeit ist von der Sprache abhängig. Die Werte findest du in der Sprachübersicht. Sollten die Werte bei einzelnen Aufgaben abweichen, steht dies in der Aufgabenstellung.

Wie viel Arbeitsspeicher darf mein Programm verwenden?

Dein Programm bekommt eine festgelegte Mange an Arbeitsspeicher, um einen Testfall zu bearbeiten. Diese Menge ist von der Sprache abhängig. Die Werte findest du in der Sprachübersicht. Sollten die Werte bei einzelnen Aufgaben abweichen, steht dies in der Aufgabenstellung.

Wie werden die Daten in mein Programm eingegeben?

Wenn ein Testfall ausgeführt wird, erhält dein Programm Daten über die Standardeingabe (STDIN), also so ähnlich als ob man die Daten über die Tastatur eingibt. Nachdem alle Daten an dein Programm geschickt wurden, wird die Standardeingabe durch ein End Of File (EOF) geschlossen. Dein Programm muss diese Eingabe auswerten, ein Ergebnis berechnen, und dieses ausgeben.

Wie muss ich mein Ergebnis ausgeben?

Dein Programm muss die Eingabe auswerten, ein Ergebnis berechnen, und dieses ausgeben. Die Ausgabe muss auf der Standardausgabe (STDOUT) erfolgen. Als Zeilenumbruch können \n (Zeilenvorschub) oder \r\n (Wagenrücklauf & Zeilenvorschub) verwendet werden. Bitte beachte, dass oft auch nach dem letzten Ergebnis noch ein Zeilenumbruch erwartet wird!

Wie kann ich in meiner Lieblingsprogrammiersprache Ein- und Ausgabe implementieren?

Wir haben einige Beispielprogramme erstellt, welche Ein- und Ausgabe in einigen häufig genuzten Programmiersprachen anhand eines kleinen Beispiels demonstrieren.

In welchen Programmiersprachen kann ich mein Programm einreichen?

Du kannst dein Programm in den Sprachen C, C++, C#, Go, Haskell, Java, Javascript, Perl, PHP, Python2, Python3, Rust oder Scala schreiben.
Deine Abgabe muss aus einer einzigen Datei bestehen. Sollten keine Besonderheiten angeben sein, so stehen dir nur die Möglichkeiten der Standardbibliothek der jeweiligen Sprache zu Verfügung.

Könnt ihr Bibliothek X für die Programmiersprache Y installieren?

Wir bieten für jede Programmiersprache grundsätzlich nur die Standardbibliotheken an, um zu gewährleisten, dass jede Sprache in etwa gleich nützlich ist. Alle Sprachen durch das gezielte Installieren von Bibliotheken auf ein vergleichbares Niveau an Funktionalität zu bringen wäre ziemlich aufwendig: Wie bringen wir die Fähigkeiten von Numpy nach COBOL, Fortran und TCL? Daher belassen wir es bei den jeweiligen Standardbibliotheken. Außerdem wäre es ja langweilig, eine Lösung zu entwickeln bei der die ganze Arbeit von ein paar Bibliotheken erledigt wird.

Du kannts in der Liste der unterstützten Programmiersprachen nachschauen, welche Features unterstützt werden und welche Versionen installiert sind.

Programmauswertung

Warum sind manche Testfälle als "geheim" gekennzeichnet?

Dass nicht alle Testfälle komplett einsehbar sind hat mehrere Gründe: Einerseits wollen wir vermeiden, dass die Testfälle einfach von Hand gelöst werden und dann in die Lösung "hartcodiert" werden. Andererseits werden in geheimen Testfällen gewisse Rand- und Sonderfälle getestet, welche in den öffentlichen Tests nicht auftauchen.

Warum dauert es so lange, meine Abgabe auszuwerten?

Falls viele Teilnehmer den Kalender gleichzeitig benutzen, kann es durchaus vorkommen, dass die Auswertung etwas länger dauert. Bitte hab in diesem Fall einfach etwas Geduld. Sollte deine Abgabe nach 15 Minuten immer noch nicht ausgewertet sein, kontaktiere uns bitte.

Auswertungsstatus

Was bedeutet der Status "Lösung enthält Fehler"?

Deine Lösung hat einen oder mehrere Testfälle nicht bestanden. Schau dir die Liste der Testfälle noch einmal genau an, und überarbeite deine Lösung.

Was bedeutet der Status "Lösung wird noch ausgewertet..."?

Deine eingereichte Lösung wird gerade noch vom System verarbeitet. Daher steht das endgültige Ergebnis noch nicht fest. Eventuell sind aber einige Testfälle schon fertig ausgewertet.

Was bedeutet der Status "Falsche Ausgabe"?

Die Ausgabe von deinem Programm entspricht nicht dem erwarteten Ergebnis. Bitte prüfe vor dem Debuggen, ob du nicht eventuell einen Zeilenumbruch vergessen hast, denn dies ist erfahrungsgemäß einer der häufigsten Fehler.

Was bedeutet der Status "Testfall in Bearbeitung"?

Um eine Aufgabe vollständig zu lösen, müssen alle Testfälle erfolgreich durchlaufen werden. Testfälle, die noch in Bearbeitung sind, wurden noch nicht ausgewertet. Sollte ein Testfall auch nach 15 Minuten immer noch nicht ausgewertet sein, kontaktiere uns bitte.

Was bedeutet der Status "Laufzeitfehler im Programm"?

Falls dein Programm abstürzt oder eine Fehlermeldung ausgibt, gilt der Testfall als nicht bestanden. Du solltest anhand der Fehlermeldung herausfinden, was genau schiefgelaufen ist und dein Programm entsprechend anpassen.

Was bedeutet der Status "Zugelassene Speichergrenze überschritten"?

In diesem Fall hat dein Programm die zugelassen Höchstspeichergrenze überschritten. Sollte dies vorkommen wird dein Programm umgehend beendet, da es keinen weiteren Speicher mehr allozieren darf.

Was bedeutet der Status "Zugelassene Laufzeit überschritten"?

Sollte ein Testfall diesen Status haben, so hat dein Programm die zugelassene Höchstlaufzeit überschritten und wurde aus diesem Grund beendet. Sollte dieser Fehler auftreten, so kann er in der Regel durch die Wahl eines besseren bzw. effizienteren Algorithmus behoben werden.

Was bedeutet der Status "Fehler beim Kompilieren"?

Das Programm ließ sich nicht kompilieren, d.h. der verwendete Compiler verweigerte die Arbeit. Bitte prüfe die Ausgabe des Compilers auf Fehler. Sollte der Quelltext bei dir mit der Standarddistribution der Programmiersprache kompilieren und du glaubst es sei ein Fehler, so kontaktiere uns bitte.

Warum werden Scriptsprachen kompiliert?

Jeder weiß, dass Scriptsprachen eigentlich nicht kompiliert werden, aber dennoch machen wir es - das Kompilieren umfasst in diesem Fall einfach das Parsen der Datei. Sollten hierbei Fehler auftreten, werden diese nicht als fehlerhaftes Programmergebnis gesehen, sondern als "Compiler"fehler.

Ich habe ein Problem! / Meine Frage wurde nicht beantwortet!

Solltest du eine Frage oder Anmerkung zu einer Aufgabe haben, kannst du diese direkt über das Formular unterhalb der Aufgabe stellen. Bitte beachte aber, dass wir Fragen zu Aufgaben und deren Implementierung nicht immer beantworten könnnen.

Alternativ kannst du uns einfach eine E-Mail schreiben: adventskalender@ieee.uni-passau.de. Wir freuen uns immer über Anmerkungen und Bugreports.