Hallo
Wir(Klassenkameraden und ich) haben im Rahmen eines Schulprojektes einen Sudoku-Löser geschrieben. Die GUI ist in Python3 und PyQt4, und der Löser an sich in Prolog. Wir hatten eigentlich vor im 2ten Halbjahr daran weiter zu arbeiten und noch mehr Spiele-Löser zu integrieren, jedoch werden wir vermutlich an einem komplett anderen Projekt arbeiten.
Da wir sehr viel Spaß daran hatten diesen Sudoku-Löser zu programmieren, habe ich mir überlegt ob evt. Interesse der Community besteht weitere Spiel-Löser zu implementieren?
Falls Interesse von jemanden unter euch besteht, meldet euch bitte hier in diesem Thread. Falls der Thread unter gehen sollte, weiß ich bescheid
Python Projekt: Denk/Knobel Spiel Löser
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Hört sich jedenfalls schon mal gut an! Allerdings: Wieso zeigst Du uns keinen Quellcode? Oder auch mal einen Screenshot / ein Video?
Interessant wäre es zunächst sich zu überlegen und zu recherchieren, für welche Knobelspiele man überhaupt Solver schreiben kann. Schach z.B. ist ja immer noch nicht lösbar mit der heutigen Technologie, "Vier gewinnt" hat man iirc vor ein paar Jahren mal gelöst (wer anfängt gewinnt immer, besser kann immer gewinnen).
Hast Du da schon etwas im Sinn?
Selbst wenn Du hier keinen direkten Mitstreiter findest, so sind hier doch immer viele an interessanten Problemen interessiert und Du kannst sicherlich den ein oder anderen Thread erstellen, um Hilfe bei einem Solver zu bekommen
Interessant wäre es zunächst sich zu überlegen und zu recherchieren, für welche Knobelspiele man überhaupt Solver schreiben kann. Schach z.B. ist ja immer noch nicht lösbar mit der heutigen Technologie, "Vier gewinnt" hat man iirc vor ein paar Jahren mal gelöst (wer anfängt gewinnt immer, besser kann immer gewinnen).
Hast Du da schon etwas im Sinn?
Selbst wenn Du hier keinen direkten Mitstreiter findest, so sind hier doch immer viele an interessanten Problemen interessiert und Du kannst sicherlich den ein oder anderen Thread erstellen, um Hilfe bei einem Solver zu bekommen
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Ich kann gern denn Quellcode verlinken, jedoch finde ich das noch nicht so relevant. Zuerst sollte man aus meiner Sicht mal klären, ob sich ein paar Leute finden lassen, dann könnte man ein Github/kleine Projektseite oder was auch immer anlegen, und Ideen sammeln.
Unsere Ideen die wir bisher hatten:
Hashiwokakero
Labyrinth
Rubik's Cube
Dame
Mühle
4 Gewinnt
5 Gewinnt
eigenes Denkspiel
Code für das Hauptfenster:
Bei dem Hauptfenster sollte man eben das Spiel das man lösen will auswählen. Da wir 4 Spiele im Plan hatten, sind es momentan einfach nur 4 Buttons:
http://python.pastebin.com/UEuYR2xc
Das Fenster für Sudoku:
Hier wird der SWI-Prolog Interpreter aufgerufen. Derzeit ist es nötig, den SWI-Prolog Interpreter "swipl" im PATH zu haben, weil er einfach per os.system() aufgerufen wird.
http://python.pastebin.com/Pd0rUaZL
Der Sudoku-Solver an sich, in Prolog:
http://python.pastebin.com/r2SwP3Nq
Das Projekt ist noch nicht komplett fertig und hat noch einige Schönheitsfehler(z.b. sind die Dateinamen einfach immer als String angegeben, sehr häßlich, ich weiß...).
Natürlich würde es später jedem selbst zustehen, zu entscheiden ob er einen Designer verwendet oder nicht, und welche Sprache er verwendet um das Denkspiel zu lösen. Dann gibt es Pakete/Installer, die einfach alles nötige installieren. Bzw. man könnte ja auch jedes Spiel als eigenes Modul betrachen, und per Option über Plugins oder so installieren. Nur fixiert sollte sein, für die GUI Python 3 und pyQt 4.
Unsere Ideen die wir bisher hatten:
Hashiwokakero
Labyrinth
Rubik's Cube
Dame
Mühle
4 Gewinnt
5 Gewinnt
eigenes Denkspiel
Code für das Hauptfenster:
Bei dem Hauptfenster sollte man eben das Spiel das man lösen will auswählen. Da wir 4 Spiele im Plan hatten, sind es momentan einfach nur 4 Buttons:
http://python.pastebin.com/UEuYR2xc
Das Fenster für Sudoku:
Hier wird der SWI-Prolog Interpreter aufgerufen. Derzeit ist es nötig, den SWI-Prolog Interpreter "swipl" im PATH zu haben, weil er einfach per os.system() aufgerufen wird.
http://python.pastebin.com/Pd0rUaZL
Der Sudoku-Solver an sich, in Prolog:
http://python.pastebin.com/r2SwP3Nq
Das Projekt ist noch nicht komplett fertig und hat noch einige Schönheitsfehler(z.b. sind die Dateinamen einfach immer als String angegeben, sehr häßlich, ich weiß...).
Natürlich würde es später jedem selbst zustehen, zu entscheiden ob er einen Designer verwendet oder nicht, und welche Sprache er verwendet um das Denkspiel zu lösen. Dann gibt es Pakete/Installer, die einfach alles nötige installieren. Bzw. man könnte ja auch jedes Spiel als eigenes Modul betrachen, und per Option über Plugins oder so installieren. Nur fixiert sollte sein, für die GUI Python 3 und pyQt 4.
mfg naeg
Hallo,
ich finde deine Idee mit dem Spiellöser sehr interressant und würde auch gerne an der Erweiterung/Verbesserung mitarbeiten. Ich bin selbst noch Schüler und arbeite auch mit Python 3. Auch PyQt4 wäre okay.
Nur funktioniert bei mir der Sudokulöser nicht richtig: wenn ich auf Lösen klicke kommt die Fehlermeldung "Aufgabenstellung nicht lösbar!" und im Textfenster kommt die Meldung, dass der Befehl "swipl" unbekannt ist. Was muss ich anders machen???
ich finde deine Idee mit dem Spiellöser sehr interressant und würde auch gerne an der Erweiterung/Verbesserung mitarbeiten. Ich bin selbst noch Schüler und arbeite auch mit Python 3. Auch PyQt4 wäre okay.
Nur funktioniert bei mir der Sudokulöser nicht richtig: wenn ich auf Lösen klicke kommt die Fehlermeldung "Aufgabenstellung nicht lösbar!" und im Textfenster kommt die Meldung, dass der Befehl "swipl" unbekannt ist. Was muss ich anders machen???
Du musst Prolog installieren, und der Prolog-Interpreter 'swipl' muss sich im Path befinden. Wenn du nicht weiter weißt, Google zuerst und wenn du es dann noch nicht hinbekommst, schreib hier nochmal und sag mir was für ein Betriebssystem du verwendest.
Du kannst mich auch gerne per IRC(naeg auf freenode) oder per Mail(dann musst du mir bitte eine PN schreiben) kontaktieren falls du mehr erfahren willst.
Du kannst mich auch gerne per IRC(naeg auf freenode) oder per Mail(dann musst du mir bitte eine PN schreiben) kontaktieren falls du mehr erfahren willst.
mfg naeg
Ich habe auch noch eins auf meiner TODO list:
http://en.wikipedia.org/wiki/Nonogram
Gibts bei SPOJ und codegolf als Aufgabe.
http://en.wikipedia.org/wiki/Nonogram
Gibts bei SPOJ und codegolf als Aufgabe.
Hendriks, hast du also auch interesse daran zu entwickeln?
Dann könnte ich ja, sofern ihr beide das wollt, alles mal auf Github werfen.
Anschließend würden wir Konventionen ausmachen, z.B. für Python aber auch welche Programmiersprachen zum Lösen verwendet werden dürfen und wie sie integriert werden, usw.
Dann könnte ich ja, sofern ihr beide das wollt, alles mal auf Github werfen.
Anschließend würden wir Konventionen ausmachen, z.B. für Python aber auch welche Programmiersprachen zum Lösen verwendet werden dürfen und wie sie integriert werden, usw.
mfg naeg
Bitte nicht gleich festnageln. Das war erst mal nur ein Link zu einem Puzzle, fuer das ich mal einen Python Solver schreiben moechte.naeg hat geschrieben:Hendriks, hast du also auch interesse daran zu entwickeln?
Nene, ich fragte lediglich ob du Interesse hast, was ja nicht gleich heißt, dass du dich dann daran beteiligst. Ich werd alles mal übers Wochenende auf Github stellen, der Code hier ist nicht ganz aktuell, außerdem gibts noch Dokumentation dazu.
mfg naeg
Also, ich habs nun auf Github gestellt: https://github.com/naeg/pySolvers
Erste Aufgaben die erledigt werden könnten:
Übersetzung in Englisch (kommentiert ist in Englisch, aber Fensternamen etc. sind derzeit in Deutsch)
Erstellen eines Entwurfs für ein Haupfenster, in dem man das zu lösende Spiel auswählt(Ich dachte bei der "Installation" der versch. Solver an Plugins)
Meine Anteilnahme wird sich leider in Grenzen halten, da ich derzeit an PySoy arbeite, um am Google Summer of Code teilzunehmen. Außerdem muss unser Löser, der in Prolog geschrieben ist, derzeit per Systemaufruf den Interpreter immer aufrufen um zu lösen, was sehr unschön ist. Daher arbeit ich auch an PySWIP, was es uns erlauben würde, Prolog von Python aus zu verwenden.
Erste Aufgaben die erledigt werden könnten:
Übersetzung in Englisch (kommentiert ist in Englisch, aber Fensternamen etc. sind derzeit in Deutsch)
Erstellen eines Entwurfs für ein Haupfenster, in dem man das zu lösende Spiel auswählt(Ich dachte bei der "Installation" der versch. Solver an Plugins)
Meine Anteilnahme wird sich leider in Grenzen halten, da ich derzeit an PySoy arbeite, um am Google Summer of Code teilzunehmen. Außerdem muss unser Löser, der in Prolog geschrieben ist, derzeit per Systemaufruf den Interpreter immer aufrufen um zu lösen, was sehr unschön ist. Daher arbeit ich auch an PySWIP, was es uns erlauben würde, Prolog von Python aus zu verwenden.
mfg naeg
- daemonTutorials
- User
- Beiträge: 171
- Registriert: Sonntag 6. Februar 2011, 12:06
- Kontaktdaten:
Kann man den Rubik's Cube denn einfach per Prolog oder sonstige lösen?
Der hat doch 20*6*120=14400 Lösungsmöglichkeiten, wenn nicht sogar noch mehr.
Dazu müsste man alle Farben und Quadrate haben und diese berechnen. Das ist schwierig.
Der hat doch 20*6*120=14400 Lösungsmöglichkeiten, wenn nicht sogar noch mehr.
Dazu müsste man alle Farben und Quadrate haben und diese berechnen. Das ist schwierig.
LG Maik
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Klar, wenn das Problem berechenbar ist, kann man es auch in Prolog darstellen und berechnen.daemonTutorials hat geschrieben:Kann man den Rubik's Cube denn einfach per Prolog oder sonstige lösen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ich weiß zwar nicht wie du auf die Anzahl der Lösungsmöglichkeiten kommst, aber es gibt bestimmte Strategien den Würfel zu lösen, und diese lassen sich natürlich in einem Algorithmus formulieren. Wie z.b. http://www.uni-protokolle.de/Lexikon/L% ... Crfel.htmldaemonTutorials hat geschrieben:Kann man den Rubik's Cube denn einfach per Prolog oder sonstige lösen?
Der hat doch 20*6*120=14400 Lösungsmöglichkeiten, wenn nicht sogar noch mehr.
Dazu müsste man alle Farben und Quadrate haben und diese berechnen. Das ist schwierig.
mfg naeg
- daemonTutorials
- User
- Beiträge: 171
- Registriert: Sonntag 6. Februar 2011, 12:06
- Kontaktdaten:
20*6*120=14400
Anzahl Quadrate auf einer Seite mal Anzahl der Seiten mal Anzahl aller Quadrate.
Anzahl Quadrate auf einer Seite mal Anzahl der Seiten mal Anzahl aller Quadrate.
LG Maik
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
https://secure.wikimedia.org/wikipedia/ ... rmutations : Das sind dann doch ein paar mehr.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte