Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. ioBroker Advent of Code

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    ioBroker Advent of Code

    This topic has been deleted. Only users with topic management privileges can see it.
    • bluegaspode
      bluegaspode @OliverIO last edited by

      @oliverio die Zeiten des globalen Leaderboard zweifle ich gar nicht, das sind die besten der besten (spezialisiert auf genau solche Rätsel) und einige von denen streamen ja auch.

      Ich habe mich nur gefragt, ob es realistisch ist, dass es im ioBroker Leaderboard eine Person gibt, die schon an 2 Tagen mit der Lösung des 2ten Teil die komplette Top 10 des weltweiten Leaderboard zeitlich schlagen konnte 🙂

      Ich selbst nutze Java zur Lösung, reviewe parallel regelmäßig die Python Lösungen, weil mich die Eleganz der Sprache immer wieder fasziniert.

      @ignis-draco said in ioBroker Advent of Code:

      mehr als 2:35 hat bei mir alleine die Brechung von Part 2 benötigt

      Bei mir waren es 13min. Ein klares Zeichen, dass man nicht den besten Weg gefunden hat, um das Rätsel zu lösen, aber ich habs rechnen lassen, solange ich am umschreiben war ... und dann war die Rechnung schneller fertig als eine komplett neue Lösung.

      Mit dem richtigen Algorithmus sind immer <1s (egal welche Programmiersprache) möglich.
      Bei Tag 5 Teil 2 auch, man muss sich dann was besseres einfallen lassen, als jede Zahl einzeln durchzurechnen, sondern clevere Weg finden, wie man ganze Gruppen von Zahlen am Stück 'behandeln' kann, ohne dass dann das Ergebnis deswegen falsch wird.
      Da wirds dann tüftelig, wenn der Code am Ende auch noch verständlich bleiben soll.

      haus-automatisierung 1 Reply Last reply Reply Quote 1
      • I
        ignis-draco last edited by

        @bluegaspode

        Ich hatte zu dem Zeitpunkt schon gedacht das ich eine gute Lösung hätte.
        Besonders interessant finde ich die Lösungen von anderen anzuschauen, denn dabei entdeckt man immer etwas was
        man noch nicht kannte.

        z.b.

        • im itertools das permutations das einem alle Permuationen einer Liste erstellt.

        • @dataclass das einem die 0815 __init__ sachen abnimmt.

        • list(zip(LISTE[::2], LISTE[1::2])) das immer das erste und das zweite Element trennt

        Ohne die Aufgaben hätte ich das nie entdeckt weil man so etwas ja auch "einfach" per Hand machen kann und dann halt nicht schaut ob es was fertiges gibt.

        1 Reply Last reply Reply Quote 0
        • haus-automatisierung
          haus-automatisierung Developer Most Active @bluegaspode last edited by haus-automatisierung

          @bluegaspode sagte in ioBroker Advent of Code:

          Ich habe mich nur gefragt, ob es realistisch ist, dass es im ioBroker Leaderboard eine Person gibt, die schon an 2 Tagen mit der Lösung des 2ten Teil die komplette Top 10 des weltweiten Leaderboard zeitlich schlagen konnte

          Suggestivfrage 👮

          @ignis-draco sagte in ioBroker Advent of Code:

          Ich Benutze Python und wenn ich die Aussage von @haus-automatisierung richtig interpretieren er auch.

          Nein, ich probiere mich mit NodeJS. An Teil 2 heute saß ich zu lange (und musste zwischendurch weg). Keine Ahnung wie man es schafft, das in so kurzer Zeit zu lösen. Höchsten Respekt dafür 🙂 Teile meine Ergebnisse ja auch hier: https://github.com/klein0r/advent-of-code-2023/

          @oliverio sagte in ioBroker Advent of Code:

          Die Leute entwickeln wahrscheinlich bereits seit mehreren Jahren

          Naja - das mache ich auch (20+ Jahre). Und komme trotzdem nicht auf das Level. Ist aber auch etwas ganz anderes, ob man möglichst schnelle Algorithmen entwickeln muss, oder eben Datenbankanbindungen / APIs / Backends usw. Solche Aufgaben wie hier gehören für mich jedenfalls nicht zum Alltag.

          OliverIO 1 Reply Last reply Reply Quote 0
          • OliverIO
            OliverIO @haus-automatisierung last edited by

            @haus-automatisierung sagte in ioBroker Advent of Code:

            Naja - das mache ich auch (20+ Jahre). Und komme trotzdem nicht auf das Level. Ist aber auch etwas ganz anderes, ob man möglichst schnelle Algorithmen entwickeln muss, oder eben Datenbankanbindungen / APIs / Backends usw. Solche Aufgaben wie hier gehören für mich jedenfalls nicht zum Alltag

            wir dürfen nicht vergessen, das es auch Leute mit entsprechendem höheren Intelligenzlevel gibt als Durchschnitt oder mit Inselbegabung.

            Betriebliche Entwicklung ist immer besser einfacher, als komplex/hoch optimiert da das erstere ist einfacher zum warten ist.
            Allerdings gibt es sicherlich Bereiche, die auf solche hochoptimierte Algorithmen angewiesen sind (Graphik, KI, Wissenschaftliche Berechnungen). Da kann die Wahl des falschen Algorithmus dann schon Welten an Performance bedeuten bzw. komplett neue Algorithmen ausarbeiten. Es gibt schließlich noch ein paar mathematische Probleme, die bisher noch nicht gelöst worden sind, bzw. deren Beweis in erträglicher Zeit noch nicht erbracht worden ist.

            haus-automatisierung 1 Reply Last reply Reply Quote 0
            • haus-automatisierung
              haus-automatisierung Developer Most Active @OliverIO last edited by haus-automatisierung

              @oliverio sagte in ioBroker Advent of Code:

              Allerdings gibt es sicherlich Bereiche, die auf solche hochoptimierte Algorithmen angewiesen sind (Graphik, KI, Wissenschaftliche Berechnungen).

              Genau, aber die nötigen Denkweisen bekommt man eben nicht, nur weil man lange Entwickler ist. Genauso kennt man ja nicht alle Applikationen und Frameworks, nur weil man solche Algorithmen schnell entwickeln kann. Ist halt ein ganz anderer Bereich.

              Deswegen war z.B. Tag 5 Teil 2 schon eine ordentliche Herausforderung für mich.

              BananaJoe 1 Reply Last reply Reply Quote 0
              • BananaJoe
                BananaJoe Most Active @haus-automatisierung last edited by

                @haus-automatisierung sagte in ioBroker Advent of Code:

                Deswegen war z.B. Tag 5 Teil 2 schon eine ordentliche Herausforderung für mich.

                Was ich jetzt schon hasse ist wenn ich feststelle das ich falsch an Teil 1 heran gegangen bin wenn ich Teil 2 mache ...
                Ich war schon stolz das ich es heute das erste mal im Teil 1 dynamisch hinbekommen hatte, die Anzahl Samen und der Karten also quasi egal waren.

                Und kam Teil 2 ... war nicht nur eine ordentliche Herausforderung. Mit Algorithmen habe ich sonst nicht viel am Hut, eher mit Logik. Wobei das natürlich zusammengehört. Ich hoffe morgen wieder auf etwas leichteres ..

                bluegaspode 1 Reply Last reply Reply Quote 0
                • bluegaspode
                  bluegaspode @BananaJoe last edited by

                  @bananajoe said in ioBroker Advent of Code:

                  Was ich jetzt schon hasse ist wenn ich feststelle das ich falsch an Teil 1 heran gegangen bin wenn ich Teil 2 mache ...

                  In diversen Tipps & Tricks zum AoC findest du Sätze wie: "The second puzzle is always a twist on the first, and it’s meant to simulate the real-world experience of changing requirements."

                  Es gibt also kein "falsch an den ersten Teil rangegangen". Der 2te Teil ist in der Regel bewusst so konstruiert, dass du vom ersten Teil nicht ableiten kannst, was beim 2ten passiert, du deinen Code also auch nicht darauf vorbereiten kannst.

                  Stattdessen ist 'Keep It simple stupid' durchaus angebracht. Und sich dann agil immer auf den Twist einlassen, der im 2ten Teil passiert, also wenn der Kunde / die Elfen endlich mit den wahren Requirements rausrücken, die sie dir nie am Anfang sagen.

                  1 Reply Last reply Reply Quote 0
                  • I
                    ignis-draco last edited by ignis-draco

                    Oh man Tag 6. Wie blöd kann ich nur sein 🤦‍♂️ 🤦‍♂️ 🤦‍♂️
                    Das einzige Problem ist das lesen bei mir gewesen. Oder haben sie eine Fehler in der Aufgabe ?

                    haus-automatisierung 1 Reply Last reply Reply Quote 0
                    • haus-automatisierung
                      haus-automatisierung Developer Most Active @ignis-draco last edited by

                      @ignis-draco sagte in ioBroker Advent of Code:

                      Das einzige Problem ist das lesen bei mir gewesen.

                      Das kenn ich, wobei es heute ja ganz gut ging 🙂 Fehler konnte ich nicht finden - fand das heute recht ausführlich erklärt.

                      bluegaspode 1 Reply Last reply Reply Quote 0
                      • bluegaspode
                        bluegaspode @haus-automatisierung last edited by

                        @haus-automatisierung

                        Und, wer von euch hat auch initial 'Brute Force' verwendet und später noch die alten Schulbücher aufgemacht, wie die Formel x^2 +bx +c aufgelöst wird?

                        😀

                        BananaJoe 1 Reply Last reply Reply Quote 0
                        • BananaJoe
                          BananaJoe Most Active @bluegaspode last edited by

                          @bluegaspode sagte in ioBroker Advent of Code:

                          Und, wer von euch hat auch initial 'Brute Force' verwendet

                          Ich ... musste eh gerade hoch zum Essen machen, hatte gesehen das er nach 20 Sekunden den Start gefunden hatte und dachte mir "ist bestimmt fertig wenn ich in nach dem Essen wieder runter komme".

                          Hatte mir zwar während des Essen eine Abkürzung überlegt (Mit verdoppelt und halbieren als Feinsuche) ... aber schön wenn es auch mal schnell ging.
                          In meiner Formelsammlung aus der Realschule 1985-1989 habe ich x^2 +bx +c nicht gefunden, in der Lehre habe ich ein paar Sinuskurven mal berechnet ... https://www.lernhelfer.de/schuelerlexikon/mathematik/artikel/quadratische-funktionen

                          bluegaspode 1 Reply Last reply Reply Quote 0
                          • bluegaspode
                            bluegaspode @BananaJoe last edited by

                            @bananajoe das ist aber eine lange Laufzeit.
                            Meine Lösung, die stur alles durchprobiert ist auch für Teil 2 in kleiner einer Sekunde durch.

                            Ohne Optimierung und nix, nur durchprobieren und rechnen.

                            haus-automatisierung BananaJoe 2 Replies Last reply Reply Quote 0
                            • haus-automatisierung
                              haus-automatisierung Developer Most Active @bluegaspode last edited by

                              @bluegaspode sagte in ioBroker Advent of Code:

                              Meine Lösung, die stur alles durchprobiert ist auch für Teil 2 in kleiner einer Sekunde durch.

                              Ja, hier auch. Daher gar keine weiteren Gedanken gemacht... 🙂

                              1 Reply Last reply Reply Quote 0
                              • BananaJoe
                                BananaJoe Most Active @bluegaspode last edited by

                                @bluegaspode sagte in ioBroker Advent of Code:

                                Meine Lösung, die stur alles durchprobiert ist auch für Teil 2 in kleiner einer Sekunde durch.

                                Ich nutze AutoIt, das performt ggf. nicht so gut

                                1 Reply Last reply Reply Quote 1
                                • haus-automatisierung
                                  haus-automatisierung Developer Most Active last edited by

                                  Gestern (Tag 7) habe ich probiert den Teil 2 vorauszuahnen und die Logik so gebaut, dass noch die Wertigkeit der einzelnen Treffer (also AAA wäre höher gewertet als KKK) berücksichtigt wird. Fazit: War Quatsch und zu kompliziert 🙂 Also wieder vereinfacht.

                                  • Vorher: https://github.com/klein0r/advent-of-code-2023/blob/60780a67f4eba378f7a522b34b3dd3a110e4f45c/day-07/index.js
                                  • Nachher: https://github.com/klein0r/advent-of-code-2023/blob/299c79fccfdd4b23e4873a89cd9021b54c5475a0/day-07/index.js

                                  Habt ihr auch mit Bitmasken gearbeitet um die Wertigkeit der Typen festzulegen?

                                  BananaJoe 1 Reply Last reply Reply Quote 0
                                  • I
                                    ignis-draco last edited by

                                    Ich habe das über ein enum gelöst

                                    class Strong(IntEnum):
                                      HIGH_CARD = 0
                                      ONE_PAIR = 1
                                      TWO_PAIR = 2
                                      THREE_OF_A_KIND = 3
                                      FULL_HOUSE = 4
                                      FOUR_OF_A_KIND = 5
                                      FIVE_OF_A_KIND = 6
                                    
                                      @classmethod
                                      def maxKind(self, value):
                                        if value == self.FIVE_OF_A_KIND:
                                          return 5 
                                        if value == self.FOUR_OF_A_KIND:
                                          return 4
                                        if value == self.THREE_OF_A_KIND or value == self.FULL_HOUSE:
                                          return 3
                                        if value == self.ONE_PAIR or value == self.TWO_PAIR:
                                          return 2 
                                        return 1
                                      
                                      @classmethod
                                      def addOneKind(self, value):
                                        if value == self.FIVE_OF_A_KIND:
                                          return self.FIVE_OF_A_KIND
                                        if value == self.FOUR_OF_A_KIND:
                                          return self.FIVE_OF_A_KIND
                                        if value == self.THREE_OF_A_KIND or value == self.FULL_HOUSE:
                                          return self.FOUR_OF_A_KIND
                                        if value == self.ONE_PAIR or value == self.TWO_PAIR:
                                          return self.THREE_OF_A_KIND
                                        return self.ONE_PAIR
                                    
                                    1 Reply Last reply Reply Quote 1
                                    • BananaJoe
                                      BananaJoe Most Active @haus-automatisierung last edited by

                                      @haus-automatisierung sagte in ioBroker Advent of Code:

                                      Habt ihr auch mit Bitmasken gearbeitet um die Wertigkeit der Typen festzulegen?

                                      Maximal kompliziert mit Zerlegen in Arrays (die Zeilen und die Kartensätze), Textvergleich in der Reihenfolge der Kartenwertigkeit und Feststellung ob es nun ein 5er, 4er, Full House usw. ist und zuweisen eines Wertes je nach Treffer, anhand diesen Wertes die Wertigkeit der Kartensätze festgelegt, festgestellt das ich damit meine Liste genau falsch herum aufgebaut habe. Nach dem Umdrehen der Liste waren aber auch innerhalb eines Wertes (z.B. Full House) die Reihenfolge nun falsch herum war ... aber nicht immer. Um mir dann bei einem anderen die Idee mit "Suchen und Ersetzen" abzuschauen und die neuen Buchstaben dann zu sortieren damit die Wertigkeit der einzelnen Karten Alphabetisch wird. Dann kam der Einfall Präfixe zu setzen damit ich das einfach nach Text sortieren kann.

                                      Da hat man dann seine 200 Zeilen Lösung und staunt wie kurz andere das hinbekommen mit Funktionen die ich noch nie benutzt habe.

                                      1 Reply Last reply Reply Quote 1
                                      • haus-automatisierung
                                        haus-automatisierung Developer Most Active last edited by

                                        Teil 2 heute nervt mal richtig 🙂 Durchrechnen dauert ewig... Wollte mal gucken wie hoch das Ergebnis ungefähr liegt und habe 10000000000000 eingegeben. "Answer too low". Oha...

                                        Heute Abend mal mehr Gedanken machen wie das klappen könnte.

                                        OliverIO 1 Reply Last reply Reply Quote 0
                                        • OliverIO
                                          OliverIO @haus-automatisierung last edited by

                                          @haus-automatisierung

                                          hah, teil2, hat ein weilchen gedauert, aber es geht dann schnell
                                          hier mit spoiler.
                                          meine zahl ist 13133452426987.
                                          da hätte er ein weilchen gerechnet (monate?)


                                          den algoritmus aus teil1 für jeden einzelnen start bis ende pfad durchrechnen und dann den kleinsten gemeinsamen vielfachen für alle durchläufe finden
                                          alle ergebnisse für jeden durchlauf hier komma-separiert eintragen
                                          https://www.matheretter.de/rechner/kgv

                                          haus-automatisierung bluegaspode 2 Replies Last reply Reply Quote 0
                                          • haus-automatisierung
                                            haus-automatisierung Developer Most Active @OliverIO last edited by

                                            @oliverio Jau habe ich mittlerweile auch so umgesetzt 🙃 19ms

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            778
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            12
                                            86
                                            7202
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo