Posts by Manul

    __blackjack__ Danke! Allerdings sind mir sowohl der Ansatz mit regulären Ausdrücken als auch die Funktionsweise der graphlib nicht wirklich klar. Magst Du Deine entsprechenden Lösungen teilen? Ich verstehe sowas manchmal besser anhand von Beispielen als anhand der Dokumentation.

    Ich bin mir nicht ganz sicher, ob ich verstehe, was Du meinst. Der Kniff beim Parsen ist doch, die Eingabe hinterher in einer Form repräsentiert zu haben, die einem eben das Bearbeiten der gestellten Aufgabe möglichst leicht macht. Ich finde, das beinhaltet durchaus ein bißchen Knobeln. Zumal ja immer noch das Raten dazu kommt, was wohl in Teil gefragt wird, und der Versuch, beim Parsen gleich dafür vorzusorgen. Das finde ich teilweise das witzigste.


    Die heutige (Tag 19) Aufgabe fand ich so na ja. Aufgabenstellungen

    wie in Teil 2 machen mir beim Nachdenken immer Knoten ins Hirn und ich brauche dementsprechend viele Versuche mit relativ viel trial & error, bis ich sie gelöst habe. Das ist zwar nicht unlehrreich, aber auch nicht durchgehend übertrieben spaßig. Mit meiner Lösung bin ich mittelzufrieden: Ich hätte sie gerne etwas allgemeiner und etwas übersichtlicher gehabt.

    __blackjack__ Danke! itertools.product ist der Baustein, der mir gefehlt hat. Das bekräftigt nochmal meinen bereits an anderer Stelle gewonnenen Eindruck, daß ich mir die itertools mal genauer anschauen sollte.

    dass man durch Form der Inputs eigentlich fast nur IO und String-Operationen macht

    Habe ich bis jetzt gar nicht so empfunden. Beziehst Du Dich da auf einen bestimmten Tag? Wir könnten ja mal unsere Lösungen im Hinblick auf Einlesen des Inputs vergleichen.


    Generell fände ich es schön, wenn hier etwas mehr Austausch über die Lösungen stattfinden würde. Ich fang einfach mal mit ein paar Fragen zu meinen Lösungen an:


    Heute (Tag 18) habe ich das Gefühl, möglicherweise einen Anwendungsfall für eine globale Variable gefunden zu haben. Damit hätte ich mir

    sparen können. Alternative wäre möglicherweise ein klassenbasierter Ansatz gewesen. Aber dazu hätte ich in Teil 1 besser raten müssen, was in Teil 2 auf mich zukommt. Wie hättet Ihr das gelöst?


    Außerdem musste ich heute an einer Stelle abprüfen, ob ein Objekt ein Match auf eine Regular Expression ist. Der im Netz gefundene Weg erscheint mir etwas hacky. Hat da jemand bessere Vorschläge?


    Zu gestern (Tag 17) hätte ich eine Frage zum

    Ich habe das explizit gelöst, hätte aber natürlich lieber einen generellen Ansatz. Meine einzige Idee ist eine rekursive Funktion, hat jemand andere Vorschläge?

    Ein Hinweis zur heutigen Aufgabe: Ich war erst verwirrt, weil ich dachte, das gezeigte Beispiel für Teil 1 widerspräche den Regeln. Der Grund war allerdings, daß ich das hier

    Quote

    (and the frame of view follows the active cells in each cycle)

    überlesen hatte. Damit stimmt's dann wieder.

    Ich habe vor einigen Tagen "aufgegeben", zumindest vorerst

    Das ist schade, bei einigen Aufgaben hätte es mich durchaus interessiert, wie Du das löst, beispielsweise Teil 2 von Tag 14. Meine Lösung für heute (Tag 16) hat auch ein paar Stellen, an denen ich das Gefühl habe, man könnte das mit umfangreicheren Pythonkenntnissen eleganter lösen.


    Aber das hier:

    Meine freie Zeit in richtige (Open-Source) Projekte zu investieren finde ich persönlich sinnvoller

    finde ich natürlich auch nachvollziehbar.


    Ich habe diese Woche frei, insofern werde ich wohl erst mal dabei bleiben.

    Mein Code für heute braucht für Teil 2 auch schon wieder ~90 Sekunden (bzw. fast 9 Minuten, wenn ich die Ausgabe der einzelnen Züge einschalte). Ich vermute auch hier Optimierungspotential durch Nachdenken.


    Hofei Zu Deiner heutigen Lösung hätte ich eine linguistische Anmerkung: Das Wort "speeched" gibt es m.W. im Englischen nicht, Du suchst "spoken". SCNR

    __blackjack__ Danke! Über die Schrittweiten habe ich mir auch schon Gedanken gemacht, aber offenbar nicht genug. ;) Der Hinweis, einzeln immer den jeweis nächsten Bus zu synchronisieren könnte sich als der entscheidende erweisen. Ich mach mich gleich mal dran.

    So, mein Code für heute ist auf Github. Für Teil 2 gibt's sicher auch elegantere Methoden, da bin ich gespannt, wie Ihr das löst.


    Beim 2. Teil von Tag 13 stehe ich kurz vorm Aufgeben. Irgendwie habe ich das Gefühl, eine offensichtliche Möglichkeit zur Vereinfachung zu übersehen. Tips und Hinweise werden gerne angenommen, aber bitte nicht gleich komplett die Lösung spoilern!

    Code
    Python 3.9.1 (v3.9.1:1e5d33e9b9, Dec  7 2020, 12:10:52) 
    [Clang 6.0 (clang-600.0.57)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import csv
    >>> dir(csv)
    ['Dialect', 'DictReader', 'DictWriter', 'Error', 'QUOTE_ALL', 'QUOTE_MINIMAL', 'QUOTE_NONE', 'QUOTE_NONNUMERIC', 'Sniffer', 'StringIO', '_Dialect', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '__version__', 'excel', 'excel_tab', 'field_size_limit', 'get_dialect', 'list_dialects', 're', 'reader', 'register_dialect', 'unix_dialect', 'unregister_dialect', 'writer']
    >>> csv.Error
    <class '_csv.Error'>
    >>> 

    Hilft Dir das weiter?

    Wie kommt Ihr auf die Ansätze für den Tag 2?

    Ich nehme an, Du meinst Teil 2?


    Ich addiere von hinten die Anzahl der Wege auf, auf denen man vom jeweiligen Adapter zum Ziel kommen kann. Für den letzten Adapter ist das genau einer, weil es ja keine höheren Adapter mehr gibt. Für alle anderen Adapter x schaue ich mir an, welche weiteren Adapter y (maximal 3) ich von dort erreichen kann. Die Anzahl der Wege von x ist dann gleich der Summe der Wege von allen y. Wird das so klar?

    Teil 2 heute ist die erste Aufgabe, die ich wirklich knifflig finde. Eine Lösung für sämtliche Beispiele habe ich, aber wenn ich die auf den echten Input loslasse, braucht sie Stunden. Die Variante mit allen Optimierungen, die mir bis jetzt eingefallen sind, läuft jetzt auch schon seit ca. 10 Minuten. Mal sehen, ob und wann die ein Ergebnis ausspuckt.


    Zwischenlösung Teil 1 in Python:

    Kapiere ich nicht, er dürfte doch durch das if und PROCNAME gar nicht dort hingelangen.

    Wie Dennis89 richtig erklärt hat: Du gehst alle Prozesse durch (Zeilen 14 u. 27). Für jeden Prozess prüfst Du dann, ob sein Name "sox" ist (Zeilen 15 u. 28). Du gibst also für jeden Prozess, der nicht "sox" heißt, Dein "Prozess läuft nicht" aus und pausierst dann eine Sekunde. Nur für den einen(?) Prozess, der tatsächlich "sox" heißt, läufst Du dann in den "läuft"-Zweig Deiner if-Abfrage.

    Mein Code für heute ist auf Github zu finden – ganz ohne if ;).


    Dafür macht mich gestern fertig: Ich hatte gestern wenig Zeit und hab's quick and dirty gelöst, hab mir meinen Code aber dann beim Überarbeiten völlig zerschossen. Und ja, ich weiß, daß eine Versionsverwaltung wie git u.a. genau dazu da ist, sowas zu verhindern. Theorie und Praxis...

    Soll das heißen die lang und breit beschriebenen Regeln zählen nicht?

    Doch, wieso sollten die nicht mehr zählen?

    Quote

    All decisions are based on the number of occupied seats adjacent to a given seat (one of the eight positions immediately up, down, left, right, or diagonal from the seat).

    "Alle Entscheidungen basieren auf der Anzahl besetzter Sitze, die einem gegebenen Sitz direkt benachbart sind (also auf einer der acht Positionen direkt links, rechts, über, unter oder ein Feld diagonal vom Sitz entfernt)."

    Quote

    If a seat is empty (L) and there are no occupied seats adjacent to it, the seat becomes occupied.

    "Wenn ein Sitz leer ist (L) und keine besetzten Sitze direkt benachbart sind, wird der Sitz besetzt."

    Quote

    If a seat is occupied (#) and four or more seats adjacent to it are also occupied, the seat becomes empty.

    "Ist ein Sitz besetzt (#) und vier oder mehr der benachbarten Sitze sind ebenfalls besetzt, wird der Sitz leer."

    Quote

    Otherwise, the seat's state does not change.

    Der Zustand aller anderen Sitze ändert sich nicht.


    Bezogen auf Deine Bilder heißt das:

    • In Bild 1 sind für den Sitz an der Position (0,0) ((x,y) jeweils von oben links gezählt) nur die Sitze in den Positionen (1,0), (0,1) und (1,1) interessant. Davon sind lediglich (0,1) und (1,1) besetzt, also 2 Sitze. Daher bleibt der Sitz besetzt.
    • In Bild 2 sind für den von Dir betrachteten Sitz an Position (6,0) lediglich die Sitze an den Positionen (5,0), (7,0), (5,1), (6,1) und (7,1) interessant. Von diesen Sitzen sind lediglich drei, nämlich (5,0), (5,1) und (6,1) besetzt. Also bleibt auch dieser Sitz besetzt.

    Jetzt klarer?