Advent of Code

  • Leider nein, hab mich wohl jetzt in etwas verrannt.

    Wenn ich mir so deinen Code ansehe hab ich wohl auch einen völlig falschen Ansatz für Teil 1 gewählt.

  • Wenn ich mir so deinen Code ansehe hab ich wohl auch einen völlig falschen Ansatz für Teil 1 gewählt.

    Höchstens ein bißchen umständlich, aber durchaus korrekt.


    Aber für Teil 2 stimmt Deine Aussage: Da suchst Du ja wieder nach der maximalen vorhandenen seat ID (nach Entfernen von ein paar Reihen), das ist aber gar nicht gefragt. Vielleicht doch die Aufgabenstellung noch mal genau lesen.

  • und dabei ein paar Sprach-Features verwenden, die ich sonst eher seltener sehe (&=, :=, Set-Operatoren, ...)

    Spannend. Von := hatte ich schon mal irgendwo gelesen (und es für eine gute Idee befunden), in freier Wildbahn ist es mir aber noch nicht begegnet.


    Ganz klar ist mir Deine Konstruktion mit der Verwendung in tuples und Zugriff auf deren letzes Element noch nicht. Kannst Du kurz die Motivation dafür erläutern?

  • Das sieht in der Tat recht kompliziert aus. Es gibt einen toootal simplen Zusammenhang zwischen dem was auf der Bordkarte steht und der ID. Reihe und Spalte kann man dann im Grunde vergessen weil die in den Aufgaben sonst nicht weiter gebraucht werden. Man muss ein bisschen low-level denken. Also Richtung Hardware, was ein Rechner eigentlich intern macht. Der Titel der Aufgabe ist da vielleicht auch ein Hinweis.


    Zu Aufgabenteil 2: Der Flug ist voll besetzt. Du hast alle anderen Bordkarten gescannt, nur Deine ist ja verloren, das heisst Deine ID fehlt in den Daten. Zusatzbedingung: es fehlen am Anfang und am Ende IDs weil es dort keine Sitze gibt. Aber es ist garantiert das auf Sitz-ID -1 und +1 von Deinem Platz aus gesehen, jemand sitzt. Wäre dem nicht so, liesse sich die Aufgabe nicht eindeutig lösen.

    “Es ist schon über so viele Dinge Gras gewachsen, dass man bald keiner Wiese mehr trauen kann.”

  • Kannst Du kurz die Motivation dafür erläutern?

    Da gibt's keine Motivation, ausser vielleicht um alles in eine Zeile zu bekommen.

    Im Grunde statt:

    Code
    foo = ...
    bar = irgendwas_mit(foo)
    Code
    bar = (foo := ..., irgendwas_mit(foo))[-1]

    Gleich muss ich mir von __blackjack__ wieder anhören, dass das nicht seinen Code-Standards entspricht :fies:


    In der Praxis kommt das eher bei dicts vor, z.B. so:

    Python
    bar = {"x": 1, "y": 42}[foo]

    Oder in C++ mit einer anonymen lambda-Funktion:

    C++
    auto value = [&] {
        ...
    }();
  • Manul Ich würde sagen die Tupel existieren um überhaupt eine Ausrede zu haben := da zu verwenden, denn man braucht das ja nur weil da mehrere Anweisungen so pervers in einen Ausdruck gezwängt werden.

    “Es ist schon über so viele Dinge Gras gewachsen, dass man bald keiner Wiese mehr trauen kann.”

  • Nicht streiten, Kinder! :)

    Da gibt's keine Motivation, ausser vielleicht um alles in eine Zeile zu bekommen.

    Na, das ist doch eine Motivation. Das := verwendest Du dann aber nur, weil eine normale Zuweisung mit = an der Stelle nicht stehen dürfte, richtig?


    Wie ist das denn bei := mit dem Scope? Ist der genauso, als würde an der Stelle (sofern legal) eine reguläre Zuweisung stehen? Wie ist das im konkreten Beispiel? Existieren die von Dir angelegten Variablen außerhalb des tuples?

    weil da mehrere Anweisungen so pervers in einen Ausdruck gezwängt werden.

    Liest sich ein bißchen wie Deine Basic-Zeilen. :D SCNR

  • Wie ist das denn bei := mit dem Scope? Ist der genauso, als würde an der Stelle (sofern legal) eine reguläre Zuweisung stehen? Wie ist das im konkreten Beispiel? Existieren die von Dir angelegten Variablen außerhalb des tuples?


  • Linus Das hat nichts mit meinen Code-Standards zu tun. Es gibt Sachen über die man diskutieren kann, aber so ein Tupelmissbrauch verstösst gegen jeden Code-Standard. Das kann man bei Code-Golf machen, aber Code-Golf-Code ist das ja auch nicht.


    Welcher ungefragte Code-Review? Ich habe auf die Frage von Manul geantwortet. Technisch nach Dir, aus meiner Sicht gleichzeitig, denn Deine Antwort habe ich noch nicht gesehen als ich auf Antworten geklickt hatte. Ansonsten: Wenn Du keine Kommentare zu Quelltext haben möchtest, stell den halt nicht öffentlich zur Diskussion…

    “Es ist schon über so viele Dinge Gras gewachsen, dass man bald keiner Wiese mehr trauen kann.”

  • Manul Nach BASIC kann man das auch aussehen lassen wenn man mehrere Ausdrücke mit ; in eine Zeile quetscht. Der Teil mit den := ohne die und ohne Tupel hat auch nicht mehr Zeilen:

    “Es ist schon über so viele Dinge Gras gewachsen, dass man bald keiner Wiese mehr trauen kann.”

  • Was mir gerade erst auffällt: Ist das tuple nicht sowieso überflüssig, weil der Gag von := nach meinem Verständnis doch gerade ist, daß die Zuweisung einen Wert zurückliefert und daher direkt in Tests verwendet werden kann?

    Code
    valid &= byr:=passport["byr"] >= 1920 and byr <= 2002

    (Wobei in diesem Fall ja sogar

    Code
    valid &= 1920 <= passport["byr"] <= 2002

    funktionieren müsste und das := dann doch wieder unnötig wäre.)

  • Hallo zusammen.


    Der Teil 1 von heute (Tag 5) war für mich leicht.

    Bei Teil 2 habe ich eine ganze weile gebraucht, um zu verstehen was überhaupt gesucht ist. danach ging es auch sehr einfach. - .... Finde die Lücke ..... wäre einfacher als Anweisung für Teil 2 gewesen....

    Leider bin ich mit github noch nicht so vertraut, sonst könnte ich meinen Code auch veröffentlichen - wobei von mir keine "Hochstehenden" Lösungsansätz kommen. Bis jetzt habe ich das meist sehr einfach gelöst (mit Liste und Schleifen).


    Bei denen die Ihre Lösung online gestellt haben, habe ich mir das eine oder andere überflogen und für mich interessante Herangehensweisen gefunden.


    Bin gespannt was morgen kommt.


    Gruss Dani

  • Leider bin ich mit github noch nicht so vertraut, sonst könnte ich meinen Code auch veröffentlichen

    Erstens wäre das doch eine günstige Gelegenheit, sich mit Github vertraut zu machen. Kann m.E. ohnehin nichts schaden. Und zweitens könntest Du Deinen Code natürlich auch einfach hier in den Thread packen. Ich finde es spannend, mir anzuschauen, wie andere an die Aufgaben rangegangen sind.

  • Hallo Manul


    Tönt beides gut.:bravo2:

    Github nehme ich mir später / morgen zur Brust - jetzt muss ich zuerst noch etwas "für" meine Wohnung tun (aufräumen).

    Code hier einstellen - anbei mal meine Lösung für heute.


    Für diejenigen welche meinen Code anschauen:

    - Hoffe ich, dass ihr keinen "Augenkrebs" bekommt:daumendreh2:

    - Nehme ich konstruktive Ideen und Anregungen gerne entgegen:danke_ATDE:

    - Hoffe ich, dass ihr mich nicht "zerfleischt" - weil es unterirdisch ist, was ich gemacht habe.:saint:

    Freundliche Grüsse

    Dani

  • Hallo


    Das hat heute richtig Spass gemacht. Der Adventskalender ist eine tolle Sache. Endlich hat man ein Ziel was man lösen muss :bravo2:. Als Anfänger fehlte mir so was. Ein Buch lesen oder ein Tutorial durcharbeiten ist ja schön und gut aber wenn man kein Projekt hat weiss man nicht so richtig was man coden soll. Und bis jetzt komme ich auch noch gut mit.


    Auch ein Danke :danke_ATDE: an alle die ihre Lösungen zeigen. Das ist sehr hilfreich da man seinen Code vergleichen kann und andere Herangehensweisen sieht.


    Auch ich möchte meine Lösung nicht verheimlichen. Kommentare und Anregungen sind immer gerne gesehen.



    Gruss


    Steinardo