Programmierwettbewerb: Handel (Ankündigungen)

Ankündigungen für Teilnehmer am Programmierwettbewerb .

Abschließendes Testverfahren


Zunächst wollten wir ein Turnier nach dem Prinzip "jeder mit jedem" durchführen. Mehrere Teilnehmer kündigten jedoch ihre Absicht an, dem Wettbewerb viele schwache Entscheidungen, „Spoiler“, vorzulegen, gegen die die Hauptentscheidung des Teilnehmers gut spielt, oder äußerten Befürchtungen, dass andere dies tun werden. Solche Handlungen sind durch die Regeln eindeutig verboten, aber selbst wenn die Regeln irgendwie umgangen werden, widerspricht dies dem Geist des Wettbewerbs. Bei diesem Wettbewerb geht es darum, wer besser ist, ein Programm zu schreiben, und nicht, wer die "Landschaft" für sich biegt, nachdem er mehr "Spoiler" heruntergeladen hat.


Obwohl wir verschiedene Methoden anwenden können und werden, um „Spoiler“ zu identifizieren und zu disqualifizieren, besteht immer die Möglichkeit, dass wir etwas nicht preisgeben. Wir möchten, dass die Gewinner des Wettbewerbs diejenigen sind, die Algorithmen besser erfinden und programmieren, und nicht diejenigen, die die Regeln kreativer umgehen.

Aus diesem Grund haben wir uns entschlossen, die Endprüfung in zwei Schritten durchzuführen. In der Qualifikationsphase wird für N zufällig ausgewählte Startwerte das Turnier „Jeder mit jedem“ ausgetragen, und das Paar (A, B) wird als von (B, A) verschieden angesehen. Somit wird jedes Paar (und in jeder Reihenfolge) bei jedem Startwert gestartet. Das Ergebnis der Qualifikationsphase ist eine Liste der Teilnehmer in absteigender Reihenfolge der Anzahl der erzielten Punkte (nämlich der Anzahl der Punkte und nicht der Anzahl der „Siege“).

Dann gehen die K besten Teilnehmer aus der Liste ins Finale, wo ein zusätzliches Turnier zwischen ihnen bei M anderen zufällig ausgewählten Startwerten stattfindet. Die endgültigen Positionen zwischen diesen K- Teilnehmern werden ausschließlich durch die Summe der Punkte bestimmt, die sie in Sitzungen mit N + M- Startwerten untereinander erzielt haben, ohne Sitzungen zu berücksichtigen, in denen Entscheidungen getroffen wurden, die das Finale nicht erreicht haben.

Dies wird es einerseits ermöglichen, eine begrenzte Anzahl von Entscheidungen, die als preisgekrönt gelten, gründlicher zu testen, und andererseits wird es den Spoilern die Unterstützung für Lösungen entziehen, die darauf zählen.

Die spezifischen Werte von N , M und K werden später bekannt gegeben, da sie von der Anzahl der Lösungen abhängen, die die Teilnehmer uns senden.

Online-Verhandlungsarenen


Wir haben mehrere neue Arenen erstellt: standard_1s ähnelt standard , überwacht jedoch die Einhaltung des Grenzwerts von 1 Sekunde pro Zug (diese Arena entspricht genau den Bedingungen der Endprüfung). large und large_1s - Arenen mit "erhöhten" Einstellungen für den Fall, dass jemand sich an ihnen versuchen möchte.

Siehe die Liste der Arenen auf der Projektseite auf GitHub.

Für jede Arena stehen jetzt Live-Statistiken für jede getroffene Entscheidung zur Verfügung (Links in der ersten Spalte der Tabelle). Die Statistiken werden im maschinenlesbaren JSON-Format bereitgestellt, aus dem es für die Teilnehmer nicht schwierig sein wird, die Präsentation der Daten zu erhalten, die sie interessieren. Der Schlüssel zu diesen Daten ist der Hash der Client- --id die mit dem Parameter --id angegeben wurde. Dieses Hash-Testsystem zeigt Ihnen jedes Mal, wenn Sie eine Verbindung zum Server herstellen. Für jeden Teilnehmer werden die Gesamtzahl der abgeschlossenen Sitzungen ( sessions ), die Anzahl der erreichten Vereinbarungen ( agreements ) und die Gesamtpunktzahl ( score ) für die gesamte Zeit ( all ) und für jeden einzelnen Tag (UTC) angegeben.

Testen Sie Systemupdates


Folgen Sie dem Update-Verlauf auf GitHub: Wir korrigieren regelmäßig die von den Teilnehmern des Testsystems festgestellten Fehler. git pull regelmäßig!

Offizieller Chat


Um den Wettbewerb zu diskutieren, wurde im Telegramm ein Kanal erstellt: @hola_challenge_haggling .

Source: https://habr.com/ru/post/de415467/


All Articles