Ich werde nicht lügen. Normalerweise bin ich nicht der wettbewerbsfreudigste Mensch da draußen. Aber wenn der Dezember näher rückt, werde ich ein bisschen unruhig. Und wenn ich Mitspieler aus dem letzten Jahr treffe, dreht sich das Gespräch schnell um die kommende Saison von Advent of Code. "Werden Sie dieses Jahr wieder mitmachen?", "Haben Sie schon mit den Vorbereitungen begonnen?", "Welche Sprache werden Sie verwenden?" oder "Werden Sie dieses Jahr wieder um die Spitzenposition kämpfen?" sind nur einige der Fragen, die gestellt werden.
Freundlicher Wettbewerb

2016 war das erste Jahr, in dem ich in Echtzeit teilgenommen habe. Obwohl ich erst am 6. Tag begann, schaffte ich es auf unserer privaten Rangliste auf einen respektablen 2. Ich muss zugeben, dass die Konkurrenz damals noch nicht so stark war. Wenn man alle Herausforderungen absolvierte, landete man schon in der Nähe der Spitze.
Dann kam die Ausgabe 2017. Im Büro herrschte noch mehr Aufregung darum. Mehr Spieler meldeten sich für die private Rangliste an, und ich stellte mir sogar einen Wecker auf 5:55 Uhr, um sicherzustellen, dass ich maximale Chancen auf ein gutes Ergebnis habe (und ich bin nicht der Einzige). Und es hat geklappt! Ich habe den ersten Platz belegt! Zugegeben, es mag geholfen haben, dass ich in Elternzeit war und wahrscheinlich etwas mehr Zeit zur Verfügung hatte als meine Konkurrenten. Aber ein Sieg ist ein Sieg, und ich habe es sogar geschafft, Punkte für die globale Rangliste zu sammeln. Das war ein gutes Gefühl! Vielleicht habe ich ja doch eine wettbewerbsorientierte Seite.
Im Jahr 2018 war der Wettbewerb noch härter. Mehr Leute standen vor 6:00 Uhr auf und der interne Slack-Kanal war aktiver als je zuvor. Die Leute verglichen Lösungen und Ausführungszeiten und hatten insgesamt eine Menge Spaß. Nach dem 24. Tag gab es einen Dreikampf um die Spitzenposition. Bulat, Marcus und ich hatten alle 1852 Punkte. Es kam also auf den letzten Tag an. Bulat löste Tag 25 am schnellsten, und obwohl ich auf dem zweiten Platz landete, hatten wir viel Spaß!

Rangliste der Stars
Aber wettbewerbsorientiert zu sein, bedeutet auch, dass Sie neugierig sind, wie Sie im Vergleich zu Ihren Mitspielern abschneiden. Die Rangliste zeigt Ihnen jedoch nur die Gesamtpunktzahl auf der privaten Rangliste, der globalen Rangliste oder die Gesamtzahl der erworbenen Sterne an. Das gibt Ihnen nicht wirklich Aufschluss darüber, wie Sie sich im Laufe der Zeit schlagen...
Glücklicherweise gibt es auch eine API. Damit erhalten Sie die Zeiten jedes Sterns, der von jedem Mitglied auf einer privaten Bestenliste erworben wurde. Damit müssen wir doch etwas anfangen können, oder? Inspiriert von einem Beitrag über die Erstellung von F1-Rundendiagrammen mit d3.js habe ich 2017 damit begonnen, etwas Python und Javascript zusammenzuhacken, um das Leaderboard json zu parsen und ein "Rundendiagramm" für Advent of Code zu erstellen. Das Ergebnis ist die unten stehende Grafik.

Die Aktualisierung der Tabelle war allerdings viel Handarbeit, also habe ich die Python-Skripte in Javascript umgewandelt und eine Browser-Erweiterung daraus gemacht. Ich habe in diesem Jahr noch ein paar kleine Funktionen hinzugefügt, z.B. eine Sortierung nach Punkten pro Tag. Die Erweiterung ist für Chrome und Firefox verfügbar, oder auf Github. Und wenn Sie unsere Bestenliste 2018 sehen möchten, verwende ich sie als interaktives Beispiel. Ja, ich bin Benutzer #35801.
Bis zum Mond und zurück
Bei der heutigen Aufgabe ging es darum, die Monde des Jupiters zu verfolgen. Der erste Teil war ziemlich einfach: Sie sollten nur 4 Objekte über eine begrenzte Anzahl von Iterationen verfolgen. Anfang der Woche sagte ich zu einem Kollegen: "Warten Sie nur, bis er [Eric Wastl] Sie dazu bringt, eine Billion Iterationen zu machen". Ich habe mich geirrt. Und zwar nicht nur um eins, sondern fast um den Faktor 400!
$ time pypy3 part2.py
Steps: 3.9E+14
pypy3 part2.py 0.28s user 0.03s system 94% cpu 0.323 total
Glücklicherweise ist Python nicht so langsam, wie manche Sie glauben machen wollen. 390 Billionen Schritte in nur 0,323s Sekunden. Damit habe ich heute den ersten Platz belegt :)
Advent des Codes 2019 Serie
- Advent of Code 2019 hat begonnen - Machen Sie mit!
- Advent of Code 2019 - Tag 2
- Advent des Codes: Wie Excel mir den Tag rettete und auch meinem Sohn den Tag rettete
- Advent des Codes - Tag 4: Visualisieren
- Advent des Codes - Tag 5: Saintaerkla2s
- Advent of Code - Tag 6: Wie ich an AoC hängen geblieben bin
- Advent of Code - Tag 7: Teilen Sie Ihren Arbeitsablauf
- Advent of Code - Tag 8: Wie einfache Dinge für manche Menschen sehr schwer sein können
- Advent of Code - Tag 9: Wie ich anfing, Spaß am Lösen von Programmierrätseln zu haben
- Advent of Code - Tag 10: Weltraum-Cowboys schießen Pixel in den Himmel
- Advent des Codes - Tag 11: Sein oder nicht sein
- Advent of Code - Tag 12: Nach dem Mond schießen
- Advent des Codes - Tag 14: Kettenreaktion
- Advent des Codes - Tag 16: Flüche
- Advent of Code - Tag 17: Vakuumieren eines Gerüsts mit dem Intcode-Programm
- Wie kleine grüne Männchen mir geholfen haben, ein Rätsel zu lösen
- Advent of Code - Tag 20: Ein bisschen Überarbeitung
- Advent of Code - Tag 21: Es ist ein Marathon, kein Sprint
- Advent of Code - Tag 22: Mischen von Karten bis in alle Ewigkeit
- Advent of Code - Tag 23: Das Netzwerk ist zuverlässig
- Advent of Code - Tag 24 & 25: Unkonventionelles Denken
Verfasst von
Adé Mochtar
Unsere Ideen
Weitere Blogs
Contact



