Advent of Code

  • Es geht schon mal an, dass es ja gar keine Sitze mit ID -1 geben kann :denker:

    Ich kann jedenfalls nichts mit der Aufgabenstellung anfangen, was sie mir damit sagen wollen.

    Anfangs meinte ich sie meinen damit, dass es die ganze vorderste und letzte Reihe nicht, aber das ist/war wohl falsch angenommen.

  • 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.

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • 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 = [&] {
        ...
    }();
  • 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…

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • 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:

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • 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.)

  • 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.

    Danke, das war der entscheidende Teil wo bei mir der Groschen gefallen ist:)

  • 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:

    funktionierendes PythonScript für Advent of Code Day 5

    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.

    Lösung Tag5

    Vielleicht kann mir ja auch einer sagen warum meine Funktion immer None zurück gegeben hat anstatt den Rückgabewert (ich hab dann Global angewandt).

    Gruss

    Steinardo

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!