Kreuzworträtsel

Du hast eine Idee für ein Projekt?
Antworten
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Ich möchte ein Kreuzworträtsel Programm programmieren. Es soll später auch mal für Touchscreens, zum Beispiel ein Tablet, geeignet sein. Für die Oberfläche möchte ich Qt verwenden, eventuell aber auch eine Weboberfläche.

Das Ganze soll so ablaufen, dass man das Rätsel eingeblendet bekommt und mit einem Antippen/klicken die entsprechende Beschreibung für waagerecht und senkrecht eingeblendet bekommt. In einer Datenbank stehen die Begriffe mit den Beschreibungen. Zusätzlich eventuell noch Informationen wie Schwierigkeitsgrad oder Kategorie(n)

Es gibt ja verschiedene Arten, zum Beispiel sowas oder sowas. Für mich wäre die zweite Variante interessant

Mein Problem ist im Moment eher der Algorithmus für die Erstellung des Rätsels. Wie könnte man das realisieren? Das gezeigte Beispiel ist relativ einfach, weil es immer nur eine Überschneidung gibt. Es wäre aber gut, wenn man auch mehrere Überschneidungen oder gleich auch die erste Variante erstellen könnte. Wie könnte man das realisieren?

Und gibt es schon irgendwo eine frei erhältliche Datenbank, auf die man zugreifen kann, damit man nicht tausende von Begriffen einzeln eingeben muss?
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
Barabbas
User
Beiträge: 349
Registriert: Dienstag 4. März 2008, 14:47

Hallo burli,

ich habe mich auch mal ein wenig mit der Thematik beschäftigt. Eine frei erhältliche Datenbank habe ich damals nicht gefunden - nur sowas wie Openthesaurus, die ist aber nur eingeschränkt geeignet. Aber vll. als "Grundstock" recht gut zu gebrauchen. Falls du noch eine bessere Quelle auftust, wäre ich auf alle Fälle interessiert. Die meisten Kreuzworträtsel-Datenbanken im Netz scheinen zumindest proprietär zu sein ... :(

Was die Logik angeht: Es gibt eine Implementierung von Bryan Helmig, die ich vom Ansatz her recht brauchbar fand. Allerdings habe ich da noch einige Probleme im Code entdeckt. Ich setzte jetzt beispielsweise Dicts ein, um mögliche Positionen für ein Wort zu finden und enumeriere nicht für jeden Buchstaben über das gesamte Grid. Außerdem bewerte ich Kreuzworträtsel nach der Anzahl der Überschneidungen, weil ich denke, dass die Annahme "mehr Überschneidungen = besseres Rätsel" plausibler ist als "längere Laufzeit = besseres Rätsel".

Ich habe den Code bisher noch nicht veröffentlicht, weil er in keinem sehr guten Zustand ist und ich mich mit anderen Sachen beschäftigt habe. Ich denke als ersten "Ansatz" kann man dir das aber wohl zumuten: Click.

Folgenden Generator nutze ich, um mehrere Kreuzworträtsel zu erstellen - da kann man dann einfach den Score vergleichen:

Code: Alles auswählen

def multiple_crosswords(cols, rows, empty = "-", maxloops=2000, wordlist=[], num=10, time_permitted=2.0, best_of=10, force_solved=False):
    """Creates a lot of crosswords.
    
    First this was a common function that sorted the crosswords by score 
    and returned them in a list.
    Now this is a generator return a tuple (crossword, score). You have
    to do the sorting by your own."""
    
    for i in range(0,num):
        cross = CrossWord(cols, rows, empty, maxloops, wordlist)
        score = cross.compute_crossword(best_of=best_of, force_solved=force_solved)
        yield cross, score
Schönen Gruß,

brb
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Hi, danke für die Beispiele. Umfangreicher als ich dachte. Werd ich mir mal in Ruhe durchschauen
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
Barabbas
User
Beiträge: 349
Registriert: Dienstag 4. März 2008, 14:47

Hallo burli,

ich habe gerade nochmal einen Blick auf Openthesaurus geworfen. Die Datei Thesaurus im Textformat ließe sich doch wohl recht gut für ein Kreuzworträtsel nutzen, dort finden sich die Synonyme jeweils durch Semikolons getrennt.

Besten Gruß,

brb
Zuletzt geändert von Barabbas am Montag 20. Juni 2011, 18:50, insgesamt 1-mal geändert.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Klingt interessant. Danke
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
paull
User
Beiträge: 2
Registriert: Mittwoch 1. Juni 2016, 15:06

ich zocke regelmäßig auf verschiedenen Websites. Auch viel bei den bekanteren Zeitungen wie http://www.sueddeutsche.de oder bei http://www.50plus.ch/freizeit/spiele/kr ... etsel.html inzwischen haben echt viele Zeitungen auch eigene Apps, wo das dann auch aufm Tablet oder Phone schnell geht. Und das gute ist, dass man oft bei Kreuzworträtsel online sogar schone Preise gewinnen kann. Freund von mir hat einen Wellnesweekend gewonnen. Ist doch perfekt oder nicht. Gerhirntraining und dann noch Preise gewinnen!
Antworten