Python Projekt: Denk/Knobel Spiel Löser

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Benutzeravatar
naeg
User
Beiträge: 33
Registriert: Dienstag 27. April 2010, 11:53

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 ;)
mfg naeg
Benutzeravatar
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 :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
naeg
User
Beiträge: 33
Registriert: Dienstag 27. April 2010, 11:53

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.
mfg naeg
Lasse
User
Beiträge: 112
Registriert: Donnerstag 3. Februar 2011, 18:25

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???
Benutzeravatar
naeg
User
Beiträge: 33
Registriert: Dienstag 27. April 2010, 11:53

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.
mfg naeg
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Ich habe auch noch eins auf meiner TODO list:
http://en.wikipedia.org/wiki/Nonogram
Gibts bei SPOJ und codegolf als Aufgabe.
Benutzeravatar
naeg
User
Beiträge: 33
Registriert: Dienstag 27. April 2010, 11:53

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.
mfg naeg
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

naeg hat geschrieben:Hendriks, hast du also auch interesse daran zu entwickeln?
Bitte nicht gleich festnageln. Das war erst mal nur ein Link zu einem Puzzle, fuer das ich mal einen Python Solver schreiben moechte.
Benutzeravatar
naeg
User
Beiträge: 33
Registriert: Dienstag 27. April 2010, 11:53

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
Benutzeravatar
naeg
User
Beiträge: 33
Registriert: Dienstag 27. April 2010, 11:53

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.
mfg naeg
Benutzeravatar
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.
LG Maik
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

daemonTutorials hat geschrieben:Kann man den Rubik's Cube denn einfach per Prolog oder sonstige lösen?
Klar, wenn das Problem berechenbar ist, kann man es auch in Prolog darstellen und berechnen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
naeg
User
Beiträge: 33
Registriert: Dienstag 27. April 2010, 11:53

daemonTutorials 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.
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.html
mfg naeg
Benutzeravatar
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.
LG Maik
BlackJack

@daemonTutorials: Und die Zahl soll jetzt was genau darstellen?
Benutzeravatar
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.
Antworten