Zum Inhalt springen →

Schlagwort: AOC

Advent of Code 2021 – Tag 8

„Wie Tag 8?“ werdet ihr euch fragen. Wir haben doch heute den 10. Dezember. Ja ich hänge mit den Blogposts hinterher. Die Woche hat es dann doch geschafft mich zeittechnisch in die Knie zu zwingen. Dazu kamen noch die Rätsel von Tag 8 und 9 die mich gefordert haben so dass ich keine Zeit mehr für die Posts hatte. Heute (Tag 10) war das Rätsel nicht allzu schwer. Während die Pasta auf dem Herd kocht, konnte ich das Rätsel lösen und jetzt noch zusätzlich den Post.

Tag 8 ging es um 7 Segment Anzeigen, die Geisel meiner Elektroniker Ausbildung. Sowohl als Schaltkreis wie auch als Ausgabe für unsere Z80 Programme. Man waren das Zeiten.
Teil 1 ging. Da ging es nur aus den Daten die Zahlen 1, 4, 7 und 8 herauszufinden. Das ist einfach, denn diese Zahlen haben eine eindeutige Anzahl angeschalteter Segmente.
Teil 2 war dann doch ein wenig anspruchsvoller. Da ist echt Zeit draufgegangen. Die Lösung kam mir dann erst als ich auf Papier rumgespielt habe.

Jetzt folgt ein Spoiler für die Lösung. Wer es selbst lösen will, der sollte jetzt aufhören zu lesen, alle Anderen einfach weiterscrollen.


























Und so sehen meine Gedanken aus. Nachdem ich so vieles versucht habe, bin ich auf die Idee gekommen einfach festgelegte Zahlen wegzulöschen und damit immer wieder Segmente zu finden die im „Rest“ einen einmalige Anzahl haben.

Und das immer wieder (also nur zwei Mal) bis die Decodier-Tabelle fertig war. Das war fordernd und hat echt Spaß gemacht.

Link zum Tagesrätsel
Mein Leaderboard ist hier Join-Code: 1204843-3e53d471
Meine Lösungen auf Github

Schreibe einen Kommentar

Advent of Code 2021 – Tag 7

Heute bin ich spät dran mit dem Bloggen. Das Rätsel habe ich wie gestern am Morgen erledigt. Ich bin selbst erstaunt wie es diese Jahr läuft und das ich die kurze Zeit morgens finde mich diesem Spaß zu widmen. Auch wenn ich am Anfang geschrieben habe, dass ich nicht regelmäßig teilnehmen kann. So ergeht es ja vielen. Wenn man die Statistiken anschaut, dann sind Goldstern Teilnehmer von 156.597 an Tag 1 auf 51.525 gefallen.
Das heutige Rätsel war einfacher, auch das kann man gut sehen. Ich habe meine erste Lösung nach 1:52 Stunden eingereicht und bin auf Platz 16539 gelandet. An Tag 5 war ich mit 3:12 Stunden auf Platz 13696. Und auch bei Teil 2. Heute 2:39 für Platz 18317 am Tag 5 4:18 für Platz 14409.
Trotzdem hat das Rätsel viel Spaß gemacht. Und auch wenn es eine echte Mathematische Funktion zur Lösung gibt (Weiszfeld Algorithmus), ich habe mal wieder in Python meine Listen prozessiert. Deswegen hat Teil 2 auch ein wenig gedauert, aber nicht ewig. Ich finde das Bild hier echt passend.

Link zum Tagesrätsel
Mein Leaderboard ist hier Join-Code: 1204843-3e53d471
Meine Lösungen auf Github

Schreibe einen Kommentar

Advent of Code 2021 – Tag 6

Nikolausi! Nein Osterhasi! Ok, der alte Gerhard Polt Sketch (wie es damals noch hieß) passt eher zu dem anderen Fest, aber man kann eh nicht davon genug bekommen. Ich schweife ab, also nochmal.

Zum Nikolausi bekommt man ja eigentlich etwas. Bei mir war es Ärger und Stress und ich hatte es eigentlich schon abgeschrieben einen Post zu schreiben. Das Rätsel hatte ich schon vor der Morgengassirunde gelöst und hatte eigentlich einen super Start in den Tag.
Und während meine Frau gerade bei „Wer wird Millionär“ mit rätselt, nutze ich die Zeit und schreiben doch diesen Post.

Das heutige AoC Rätsel ist wieder ein Memoryfresser. Ein typisches Rätsel, dass im Teil 1 einfach zu lösen ist, meistens durch eine Schleife und anwachsende Liste. Aber in Teil 2 werden die Parameter so erhöht, dass jeder normale PC die Flügel von sich streckt. Und ja, beim Hinweis „maybe exponentially quickly?“ hätten die Alarmglöcken läuten müssen. Und so ist meine Aussage von gerade das ich das Rätsel „vor“ der Morgengassirunde gelöst habe, nicht ganz richtig. Denn Teil 1 schon, und in der halben Stunde, in der ich unterwegs war, hat mein Laptop alles gegeben auch Teil 2 zu lösen, jedoch ohne Erfolg. Aber so eine Gassirunde ist das Beste um neue Gedanken zu fassen. Und so war es schnell umgeschrieben um zur Lösung zu kommen. Das habe ich auch dem AoC Training vom letzten Jahr zu verdanken.

Und warum erinnert mich dieses Laternenfische Wachstum nur an die Corona Situation aktuell? Und warum fallen wir immer auf exponentielle Funktionen rein?

Link zum Tagesrätsel
Mein Leaderboard ist hier Join-Code: 1204843-3e53d471
Meine Lösungen auf Github

Schreibe einen Kommentar

Advent of Code 2021 – Tag 5

Sonntag. Da hat man in der Regel ein wenig mehr Zeit und mich hat es früh aus dem Bett geholt. Also konnte ich, solange noch alle schlafen, schön mit dem Tagesrätsel anfangen. Koordinatensystem und Lienen auf diesem. Eine sehr nette Aufgabe. Die Lösung ist mir auch nicht allzu schwer gefallen. Tricky dabei war, dass Anfang und Ende der Linien in alle Richtungen möglich war. Interessant auch zu sehen wir ein Competitive Programmer auf den gleichen Fehler reingefallen ist und für die Lösungsfindung ähnlich lange gebraucht hat. Wobei das wohl das Einzige ist, bei dem wir die gleiche Geschwindigkeit haben. Interessant ist auch seine kleine Batchdatei mit der er das Inputfile automatisch downloaded.
Teil 2 mit Diagonalen Linien war ne Idee kniffliger. Wobei es viel hilft, dass es nur 45° Diagonalen sind. Ich habe jedoch in der Schnelligkeit den Code dupliziert anstatt mit einem Schalten zu arbeiten. Vielleicht mache ich es die Tage noch sauber.

Eine Sache wollte ich euch noch zeigen. Während ich die Rätsel nur löse, gibt es viele, die sich noch den Spaß machen diese zu visualisieren. Der Subreddit zum Advent of Code ist immer einen Besuch wert. Ich hänge mal ans Ende ein paar davon an.

Link zum Tagesrätsel
Mein Leaderboard ist hier Join-Code: 1204843-3e53d471
Meine Lösungen auf Github

Tag 3

Tag 4

Tag 5

Schreibe einen Kommentar

Advent of Code 2021 – Tag 4

Was für ein Rätsel. Es geht um Bingo. Teil 1 hat mich gefordert, jedoch habe ich eine Lösung gefunden. Aber Teil 2 hat mich zur Verzweiflung gebracht. Sogar bei meiner Mittags- und Abendgassirunde habe ich kein Podcast gehört weil sich meine Gedanken nur um das Rätsel gedreht haben. Ich habe den Code mehrfach umstrukturiert und Zwischenlisten erstellt. Ich habe mit Markern gearbeitet und auch knallhart Listen (eine Liste entspricht einer Bingokarte) gelöscht. Alles hat nicht funktioniert. Ein Problem ist, dass das Rätsel manuell zu checken schlichtweg nicht möglich ist. Oder besser gesagt, ich wollte mir die Arbeit nicht machen.

Und dann ist es mir aufgefallen. Nach zig Print Befehlen zum debuggen habe ich gesehen, dass ich nur 4 Spalten der Bingokarten checke. Das hatte in Teil 1 keine Relevanz, denn da ist eine Reihe auf der Gewinnerkarte auch mit nur 4 Zahlen für die Lösung verantwortlich. Und im Testdatensatz ist es die 3. Spalte, also auch irrelevant. Da muss ich immer daran denken wie Developer sich über Tester amüsieren weil sie „unrealistische“ Situationen testen.

Über meine Lösung bin ich mal wieder zufrieden. Ich habe einen netten Kniff gefunden anstatt die Listen ständig miteinander zu vergleichen. Keine Spoiler hier im Beitrag.

Und die Statistik? Na wie es aussieht habe nicht nur ich Schwierigkeiten.
Gestern haben 76.712 beide Rätsel gelöst, heute „nur“ 38.389. Und auch diejenigen die nur Teil 1 gemacht haben sind von 23.652 auf 3.857 gefallen.
Und ich? Tja, Teil 1 habe ich nach knapp über 6 Stunden eingereicht. Lösung für Teil zwei erst nach fast 14 Stunden. Und nein, dazwischen habe ich auch andere Dinge gemacht. Wie z.B. Boostern.

Part 1 Part 2
Day Time Rank Score Day Time Rank Score
4 06:19:55 22101 0 2 13:44:44 36289 0

Link zum Tagesrätsel
Mein Leaderboard ist hier Join-Code: 1204843-3e53d471
Meine Lösungen auf Github

Schreibe einen Kommentar

Advent of Code 2021 – Tag 3

Heute wurde das Rätsel angezogen. Mal wieder ging es in die Welt der Binären Zahlen. Ich kann mich noch gut an letztes Jahr erinnern. Als ich Monate später ein Video mit der Kotlin Lösung angeschaut habe, wurde mir gezeigt, wie man mit den Binärwerten einfach rechnen kann. Und ich habe heute das Gefühl, dass es auch der Fall ist und ich sehe es nicht. Deswegen ist meine Lösung wieder mit Schleifen und IF Abfragen und einer der Stärken von Python List Comprehension. Ich bin trotzdem ganz glücklich mit der Lösung.

Es gibt auch einen Seite die es sich zu besuchen lohnt. Ich habe gestern erwähnt, dass die Beteiligung nachlässt. Hier kann man schön sehen wie der aktuelle Stand ist.

https://adventofcode.com/2021/stats

Bei mir sieht es auch besser aus. Bin wieder um die 12 Stunden zu spät trotzdem bei Teil 2 schon unter 50.000 Teilnehmer. Kann aber auch daran liegen, dass es Teil 2 auch inne hat.

Part 1 Part 2
Day Time Rank Score Day Time Rank Score
3 11:21:19 67434 0 2 12:07:23 47017 0

Link zum Tagesrätsel
Mein Leaderboard ist hier Join-Code: 1204843-3e53d471
Meine Lösungen auf Github

Schreibe einen Kommentar

Advent of Code 2021 – Tag 2

Siehe da, ich habe doch noch ein wenig Zeit gefunden heute, am entsprechenden Tag, die Aufgabe zu lösen. Wobei die ersten Tage ja immer recht einfach sind. Tag 1 war nur ein Addieren. Das Index verschieben von Teil 2 ist mit Python kein Hexenwerk.

Tag 2 ist an sich genau das Selbe mit dem Unterschied, dass man jetzt String und Integer verarbeiten muss. Aber auch hier nur Iterieren und per IF addieren oder subtrahieren.

Interessant ist, dass ich gestern beim Einreichen zeitlich später dran war aber eine höhere Platzierung erreicht habe. Das ändert sich meistens gegen Ende.

Part 1 Part 2
Day Time Rank Score Day Time Rank Score
2 11:29:36 73169 0 2 12:01:02 70963 0
1 13:01:15 72242 0 1 13:17:29 63377 0

Link zum Tagesrätsel
Mein Leaderboard ist hier Join-Code: 1204843-3e53d471
Meine Lösungen auf Github

Ein Kommentar

Advent of Code 2021 – Tag 1

Erster Dezember, es geht wieder los. Heute öffne ich nicht nur täglich ein Türchen im Adventskalender sondern auch immer ein Rätsel im Advent of Code. Letztes Jahr bin ich das erste Mal auf diese Webseite gestoßen.

https://adventofcode.com/

Erik Wastl betribt seit Jahre diese kleine Challenge bei der man jeden Tag im Dezember ein kleines Rätsel bekommt, dass man mit einem kleinen Programm in der Programmiersprache seiner Wahl lösen kann. Ich habe es das letzte Jahr mit Python und dieses Jahr werde ich es auch wieder damit lösen. Eigentlich wollte ich meine Rust und Kotlin Kenntnisse damit erweitern, jedoch waren die letzten Monate so unentspannt, dass ich bei beiden Sprachen nicht flüssig genug bin.

Meine Lösungen lade ich wie beim letzten Mal auf Github. Da findet ihr auch meine Lösungen des letzten Jahr.

https://github.com/MassimoCastell/AdventofCode

Und wer sich berufen fühlt mitzumachen kann auch gerne meinem privaten Leaderboard beitreten. Und nein, ich bin nicht so ein Mensch der die Nacht durchmacht um sofort das Rätsel zu lösen.

Join-Code: 1204843-3e53d471

https://adventofcode.com/2021/leaderboard/private/view/1204843

Schreibe einen Kommentar