Vielen Dank an alle Teilnehmer
des Programmierwettbewerbs ! Der Entscheidungsprozess ist noch nicht abgeschlossen, aber am 17. Juli um Mitternacht haben wir die damaligen Entscheidungen getroffen und ein Miniturnier zwischen ihnen abgehalten. Es traf 82 Entscheidungen.
Aber zuerst ein paar Ankündigungen.
Der Wettbewerb wird um eine Woche verlängert
Die Frist für Entscheidungen wird bis
zum 27. Juli 2018 , 23:59:59 UTC verlängert. Außerdem werden die Fristen, bis zu denen die Ergebnisse des Wettbewerbs bekannt gegeben werden, eine Woche im Voraus verschoben. Wir haben den Wettbewerb erweitert, um die Abdeckung während der Ferienzeit zu verbessern.
Abschließende Erläuterungen zum Test
Nach der Abnahme der Arbeiten werden die Tests gründlicher sein als die derzeitige vorläufige.
Startwerte
Wir veröffentlichen eine Methode, mit der wir versprechen, Startwerte für die endgültigen Tests auszuwählen. Diese Methode sollte eindeutig und leicht überprüfbar, aber nicht vorhersehbar sein. Also nehmen wir den ersten Tweet von
diesem Twitter , der dort nach Ablauf der Frist erscheint. Es ist kaum zu glauben, dass wir uns mit Jerry Springer verschworen haben, oder? Aus dem Tweet nehmen wir nur den Text ohne Bilder und Videos. Wenn der Tweet keinen Text enthält, sondern nur ein Bild, nehmen Sie den nächsten Tweet. Retweets zählen. Der Name des Retweet-Kontos wird nicht übernommen.
Aus dem Tweet-Text erhalten wir die Startwerte wie folgt:
const random_js = require('random-js'); const text = 'The tweet goes here'; const bytes = Array.from(new Buffer(text)); const random = new random_js(random_js.engines.mt19937().seedWithArray(bytes)); for (let i = 0; i<200; i++)
Elemente der resultierenden Sequenz mit
ungeraden Zahlen werden bei einer Nummerierung ab 1 (dh der ersten, dritten, fünften usw.) als Startwerte für die erste Runde und mit
geraden als zusätzliche Startwerte für das Finale verwendet.
In der ersten Runde wird jedes geordnete Lösungspaar mit mindestens 100 Startwerten gestartet (mehr, wenn wir Zeit haben). Im Finale werden mindestens 100 zusätzliche Startwerte verwendet. Sitzungen, die in der ersten Runde zwischen Entscheidungen, die das Finale erreichten, abgehalten wurden, werden im Finale verwendet (jedoch keine Sitzungen zwischen dem Finalisten und der Entscheidung, die das Finale nicht erreicht hat). Somit entscheiden mindestens 200 Startwerte über das Ergebnis des Finales.
Auswahl der Finalisten
Nach der ersten Runde werden alle Entscheidungen nach der Anzahl der erzielten Punkte sortiert. Eine Reihe von Entscheidungen, beginnend mit dem Tabellenführer, werden zum Finale zugelassen.
Die folgenden Regeln gelten für die Auswahl der Finalisten. Die Anzahl der Finalisten entscheidet, welche der Regeln für die Anzahl der Entscheidungen
am strengsten ist (dh am
wenigsten überspringt).
- Nicht mehr als die Hälfte der Lösungen.
- Nicht mehr als 50 Lösungen.
- Nur Lösungen mit besseren Ergebnissen als
example.js
.
Zwischenergebnisse
Für Zwischentests haben wir natürliche Zahlen von 1 bis einschließlich 50 als Startwerte verwendet. Jedes geordnete Paar, bestehend aus verschiedenen Lösungen, wurde mit jedem dieser Werte ausgeführt. Somit bestand das Turnier für 82 Teilnehmer aus 332100 Sitzungen; Jede der Lösungen nahm an 8100 Sitzungen teil.
Bisher anstelle der Namen der Teilnehmer - Identifikatoren von Lösungen. Ihre Kennung befindet sich in dem automatischen Brief, den Sie nach dem Senden der Entscheidung erhalten haben. Es ist nicht verboten, in den Kommentaren zu diesem Beitrag anzugeben, dass diese und jene Entscheidung bei Ihnen liegt.
Bitte beachten Sie, dass sich an 59, 60 und 61 Stellen Kopien des Skripts
example.js befinden . Interessanterweise zeigten 21 von 82 Lösungen niedrigere Ergebnisse als unser primitives Beispiel. (Warum zeigten drei Kopien desselben Skripts leicht unterschiedliche Ergebnisse? Da einige Lösungen
Math.random
und die Ergebnisse von Sitzungen, an denen sie beteiligt sind, nicht reproduzierbar sind.)
Eine Tabelle mit Zwischenergebnissen finden Sie
auf GitHub . Legende:
- S : Anzahl der erzielten Punkte (dies ist Gegenstand des Wettbewerbs)
- S / N : Durchschnittliches Sitzungsergebnis
- A : Anzahl der Sitzungen wurde vereinbart
- A / N : Prozentsatz der Sitzungen mit Einigung
- S / A : Durchschnittliches Sitzungsergebnis mit erreichter Einigung
- X : Anzahl der von diesem Teilnehmer abgebrochenen Sitzungen (aufgrund von Ausnahmen oder falschen Ergebnissen)
Natürlich bleibt vor dem Ende des Wettbewerbs noch Zeit, in der sich die Ausrichtung der Kräfte ändern kann. Mach es!