PUPU Solver mit Python

There are 95 replies in this Thread which has previously been viewed 7,751 times. The latest Post (February 6, 2025 at 2:29 PM) was by 2049.

  • Jetzt ist mein Solver auch endlich fertig und unter Please login to see this link. abrufbar.

    Das Programm ist komplett in Python geschrieben. Für Windows und Linux gibt es binaries.

    Es handelt sich um ein Kommandozeilentool.

  • Funktioniert nicht auf anhieb bei mir.

    pygame habe ich nachinstalliert.

    Code
    python pupu_solver.py puzzle
    pygame 2.6.1 (SDL 2.28.4, Python 3.7.0)
    Hello from the pygame community. https://www.pygame.org/contribute.html
    Traceback (most recent call last):
      File "pupu_solver.py", line 289, in <module>
        def get_best_solution(solutions: list[list]) -> list:
    TypeError: 'type' object is not subscriptable

    PABasicPlease login to see this link.Please login to see this link.Please login to see this link.Please login to see this link.Please login to see this link.

  • Funktioniert nicht auf anhieb bei mir.

    pygame habe ich nachinstalliert.

    Code
    python pupu_solver.py puzzle
    pygame 2.6.1 (SDL 2.28.4, Python 3.7.0)
    Hello from the pygame community. https://www.pygame.org/contribute.html
    Traceback (most recent call last):
      File "pupu_solver.py", line 289, in <module>
        def get_best_solution(solutions: list[list]) -> list:
    TypeError: 'type' object is not subscriptable

    Kein Wunder. puzzle ist ja bestimmt auch keine vorhandene Datei. Die heißt ja auch puzzle.txt.

    Ja, müsste ich noch eine Prüfung rein machen, ob die Datei auch existiert.

  • Kein Wunder. puzzle ist ja bestimmt auch keine vorhandene Datei. Die heißt ja auch puzzle.txt.

    Ja, müsste ich noch eine Prüfung rein machen, ob die Datei auch existiert.

    Korrekt, da habe ich nicht aufgepasst. Aber auch mit der puzzle.txt funktioniert es nicht.

    Code
    python pupu_solver.py puzzle.txt
    pygame 2.6.1 (SDL 2.28.4, Python 3.7.0)
    Hello from the pygame community. https://www.pygame.org/contribute.html
    Traceback (most recent call last):
      File "pupu_solver.py", line 289, in <module>
        def get_best_solution(solutions: list[list]) -> list:
    TypeError: 'type' object is not subscriptable

    EDIT: Ist meine Python Version 3.7 ausreichend?

    PABasicPlease login to see this link.Please login to see this link.Please login to see this link.Please login to see this link.Please login to see this link.

  • Kein Wunder. puzzle ist ja bestimmt auch keine vorhandene Datei. Die heißt ja auch puzzle.txt.

    Ja, müsste ich noch eine Prüfung rein machen, ob die Datei auch existiert.

    Korrekt, da habe ich nicht aufgepasst. Aber auch mit der puzzle.txt funktioniert es nicht.

    Code
    python pupu_solver.py puzzle.txt
    pygame 2.6.1 (SDL 2.28.4, Python 3.7.0)
    Hello from the pygame community. https://www.pygame.org/contribute.html
    Traceback (most recent call last):
      File "pupu_solver.py", line 289, in <module>
        def get_best_solution(solutions: list[list]) -> list:
    TypeError: 'type' object is not subscriptable

    EDIT: Ist meine Python Version 3.7 ausreichend?

    Ist das die puzzle.txt von mir?

  • Kein Wunder. puzzle ist ja bestimmt auch keine vorhandene Datei. Die heißt ja auch puzzle.txt.

    Ja, müsste ich noch eine Prüfung rein machen, ob die Datei auch existiert.

    Korrekt, da habe ich nicht aufgepasst. Aber auch mit der puzzle.txt funktioniert es nicht.

    Code
    python pupu_solver.py puzzle.txt
    pygame 2.6.1 (SDL 2.28.4, Python 3.7.0)
    Hello from the pygame community. https://www.pygame.org/contribute.html
    Traceback (most recent call last):
      File "pupu_solver.py", line 289, in <module>
        def get_best_solution(solutions: list[list]) -> list:
    TypeError: 'type' object is not subscriptable

    EDIT: Ist meine Python Version 3.7 ausreichend?

    Ist das die puzzle.txt von mir?

    Ja, die Originale aus der Zip-Datei

    PABasicPlease login to see this link.Please login to see this link.Please login to see this link.Please login to see this link.Please login to see this link.

  • Hm, dann scheint da tatsächlich irgendwas in Python 3.7 nicht zu passen. Hab aber im Moment keine Ahnung was das sein könnte. Ich habe 3.9.7 und 3.11.4 verwendet (ich meine es wäre ncoh eine dritte 3.9 gewesen).

  • Ich mache mal ein Update

    EDIT:

    Mit der Version 3.11 hat es geklappt. Dachte erst es kommt nicht, nur schwarzer Bildschirm, aber nach ein paar Sekunden kamm dann die Auflösung und ich konnte schön mit den Cursortasten durch die Lösung springen!

    PABasicPlease login to see this link.Please login to see this link.Please login to see this link.Please login to see this link.Please login to see this link.

    Edited once, last by TD1334 (November 11, 2024 at 4:34 PM).

  • Ich mache mal ein Update

    EDIT:

    Mit der Version 3.11 hat es geklappt. Dachte erst es kommt nicht, nur schwarzer Bildschirm, aber nach ein paar Sekunden kamm dann die Auflösung und ich konnte schön mit den Cursortasten durch die Lösung springen!

    Muss ich mal bei Gelegenheit schauen, was da in 3.7 nicht geht.

    Aber vorher muss ich nochmal schauen, ich glaube es gibt da noch ein Problem, wenn eine Mauer nicht am Rand ist. Dann dürten die Teile durch die Mauer fallen.

    Übrigens: Nicht wundern, die Binaries die ich angekündigt hatte, sind wieder weg. Ich hatte einen Fehler gemacht und musste das Repository neu aufsetzen. Jetzt lassen sich die Binaries nicht mehr hoch laden. Aber vielleicht merkt Github, dass die schon mal hoch geladen urden (wenn auch wieder gelöscht) und verweigert es deshalb. Dann sollte sich das mit dem nächsten Release lösen. Github ist noch neu für mich.

    Edit: Ja der befürchtete Bug war drin. Ist gefixt.

  • Jetzt ist mein Solver auch endlich fertig und unter Please login to see this link. abrufbar.

    Wow, 64erGrufti, dein Solver ist einfach genial! Es ist fantastisch zu sehen, wie PUPU jetzt von Computern gelöst wird 🤖 - definitiv ein Schritt in die Zukunft. Vielen Dank für dein großartiges Engagement und deinen Beitrag zur PUPU-Community!

  • Jetzt ist mein Solver auch endlich fertig und unter Please login to see this link. abrufbar.

    Wow, 64erGrufti, dein Solver ist einfach genial! Es ist fantastisch zu sehen, wie PUPU jetzt von Computern gelöst wird 🤖 - definitiv ein Schritt in die Zukunft. Vielen Dank für dein großartiges Engagement und deinen Beitrag zur PUPU-Community!

    Das Automatisieren von Vorgängen fand ich schon immer ein interessantes Thema. Und durch die Lösungen zu den AdventOfCode-Aufgaben, die ich Please login to see this link. erwähnt hatte, habe ich auch schon viel zur Lösung von solchen Problemen gelernt.

    Ich habe heute übrigens zufällig die Mailadresse von ihm gefunden und werde ihn dann mal kontaktieren. Ich fände es sehr interessant, ob er eine effektivere Lösung findet. Darin ist er ja echt gut. Natürlich muss er sich dem Problem noch annehmen.

  • Ich habe den Solver gerade von der Please login to see this link. runtergeladen und wollte loslösen lassen.

    Please login to see this attachment.

    :cry:

    Pygame ist installiert. Ich verwende Linux Lite (eine Ubuntu-Variante). Fehlt mir eventuell noch was zum Löseglück? :)

  • Fehlt mir eventuell noch was zum Löseglück? :)

    Laut einem Kollegen, wohl eine neuere Version von Python3. :prof:

    Ich habe die Version 3.8.10, aber "Typannotationen mit generischen Typen wie list[int] wurden erst ab Python 3.9 stabil und richtig unterstützt."

  • Typannotationen mit generischen Typen wie list[int] wurden erst ab Python 3.9 stabil und richtig unterstützt."

    Ah, das könnte natürlich sein. Theoretisch braucht man die ja gar nicht, ich schreibe sie aber gerne rein, da mir die IDE dann automatisch die passenden Methoden und Eigenschaften anbietet.

    Ich weiß gar nicht, ob es eine Möglichkeit gitbt, die automatisiert zu löschen.

  • So, nachdem ich gefühlte 300 Stunden auf Python 3.13 geupdated habe, bekomme ich nun keinen Fehler mehr, sondern ein schwarzes Fenster!

    Please login to see this attachment.

    Ich blicke quasi in ein schwarzes Loch! :cry:

  • Ich blicke quasi in ein schwarzes Loch! :cry:

    Er rechnet, das ist schon OK. Du kannst mit dem Parameter -d auch "zuschauen", was er macht. Das verlangsamt den Prozess natürlich.

    Aber mein Rechner ist nun auch schon bestimmt seit ner Stunde an GoDot 's Level. Es gibt scheinbar doch etwas viele Möglichkeiten. Bei meinen Tests war das alles etwas schneller.

    Ich kenne mich mit Threading leider nicht aus. Damit ließe sich bestimmt was machen. Bei mir nutzt er gerade mal 6% CPU. Da ginge noch was.

  • Ich blicke quasi in ein schwarzes Loch! :cry:

    Er rechnet, das ist schon OK. Du kannst mit dem Parameter -d auch "zuschauen", was er macht.

    Ah! Danke! Dann klappt es ja doch. Wenn ich zugucke sehe ich nun auch was! :D

    Please login to see this attachment.

  • 64erGrufti

    Ich lasse dein Programm seit 15 Minuten rechnen. Nur der Lüfter rödelt .. wäre nicht schlecht, wenn du beim berechnen so alle 1000 Durchläufe vielleicht selbige ausgibst, damit man sieht, dass er was macht und wie weit er ist.

    In der Zeit habe ich das Level kopfmässig inzwischen gelöst. :smile:

    PABasicPlease login to see this link.Please login to see this link.Please login to see this link.Please login to see this link.Please login to see this link.

  • 64erGrufti

    Ich lasse dein Programm seit 15 Minuten rechnen. Nur der Lüfter rödelt .. wäre nicht schlecht, wenn du beim berechnen so alle 1000 Durchläufe vielleicht selbige ausgibst, damit man sieht, dass er was macht und wie weit er ist.

    In der Zeit habe ich das Level kopfmässig inzwischen gelöst. :smile:

    Gehr mir auch so, wie ich ja schon geschrieben habe. Ich habe vielleicht 5 Minuten für das Level gebraucht. Mein Rechner rechnet jetzt schon etwa 2 Stunden.

    Ja, so ab und zu was anzeigen, das ließe sich machen. Scheint das eigentliche Problem aber nicht zu lösen. Ich glaube, da muss Threading oder Multiprocessing dran.

    Wie gesagt, bei mir 6% CPU-Nutzung. Ja, der Lüfter läuft zwar auch, aber 6% ist schon recht dürftig. Den Rest muss man da auch noch irgendwie nutzen.