Programmieren eines Wortgenerators

Hier mal meine quick an dirty Lösung in Python als Kommandozeilenbasiertes Programm:

Code:
dict = {}

def create_dict():
    file = open("/usr/share/dict/words")

    for line in file:
        word = line.strip()
        key = create_key(word)

        if dict.has_key(key):
            dict[key].append(word)
        else:
            dict[key] = [word]

def create_key(string):
    list = map(None, string)
    list.sort()
    return ''.join(list)

def interface():
    create_dict()

    while True:
        input = raw_input("Zu suchende Buchstaben: ")
        key = create_key(input)

        if dict.has_key(key):
            print "Gefunden: ", dict[key]
        else:
            print "Leider kein Wort gefunden :-("

interface()

Meine Idee war das ich ein Wörterbuch verwende und alle Einträge in einem Dictionary abspeichere. Ein Dictionary besteht ja aus n Key:Value Tupeln. Als Key nehme ich das Wort aus dem Wörterbuch bei dem die Buchstaben aufsteigend sortiert sind. Als Value nehme das Wort ansich. Da ja mehr Wörter aus einer Buchstabenfolge bestehen können sind die Wörter, die als Value verwendet werden in einer Liste abgespeichert. Ich habs hier unter Linux gemacht und es funktioniert. Das Wörterbuch sollte ein Textfile sein bei dem jedes Wort in einer eigenen Zeile steht.
 
Ja ich würde dir auch für das Programm 5€ zahlen!

Echt coole Sache!
 
mrpac schrieb:
Meine Idee war das ich ein Wörterbuch verwende und alle Einträge in einem Dictionary abspeichere.
In Java hab' ich das irgendwo schon mal gesehen . . .
Wo kann das nur gewesen sein? ;)


Gruß,

?=?
 
?=? schrieb:
In Java hab' ich das irgendwo schon mal gesehen . . .
Wo kann das nur gewesen sein? ;)

Ich auch, nur hab ich mir gedacht die paar Zeile Python sind leichter verständlich als der Java code :p
 
mrpac schrieb:
Ich auch, nur hab ich mir gedacht die paar Zeile Python sind leichter verständlich als der Java code :p
Übersichtlicher sind sie bestimmt.

Nicht dass ich meinem Werk eine besondere Schaffenshöhe zugestehen würde, aber es wäre eine nette Geste gewesen, wenn du dich beim abkupfern auf den ursprünglichen Autor beziehst anstatt das als deine Idee auszugeben.
Jedenfalls hat die Welt jetzt eine weitere Lösungsvariante :p


Gruß,

?=?


Edit: Hört die Python-Variante mit ihrer Schleife auch nochmal auf, oder muss man die hart abbrechen?
 
Zuletzt bearbeitet:
?=? schrieb:
Nicht dass ich meinem Werk eine besonderen Schaffenshöhe zugestehen würde, aber es wäre eine nette Geste gewesen, wenn du dich beim abkupfern auf den ursprünglichen Autor beziehst anstatt das als deine Idee auszugeben.

Edit: Hört die Python-Variante mit ihrer Schleife auch nochmal auf, oder muss man die hart abbrechen?

Also ehrlich gesagt hab ich mir deine Lösung nicht genau angeschaut da ich mich ziemlich ungern in Java Code einlese da ich die API nicht gut kenne. Da in Python ein Dictionary genau so native ist wie ein Array wird wohl jeder der bischen mit Python arbeitet auf diese Lösung kommen. Ich war mir nicht 100%ig sicher ob du das genau so gemacht hast wie ich mir das gedacht habe.

Die Scheife bricht mir ^d oder ^c ab (keine Ahnung wie das auf dem MAC ist) da dadurch eine exception geworfen wird die nicht abgefangen wird.
 
Also es sah mir doch sehr nach meinem ursprünglichem Posting aus, aber Schwamm drüber.
Deiner Version fehlt das Ignorieren der Groß-/Kleinschreibung.
Afaik kümmert sich Scrabble nicht darum, oder?

^C und ^D funktionieren zwar im Terminal, allerdings bekommt man ziemlich unschöne Fehlermeldungen.

Übrigens scheint Python beim erzeugen des Dictionaries übrigens etwas schneller zu sein, als Java.


Gruß,

?=?
 
?=? schrieb:
Deiner Version fehlt das Ignorieren der Groß-/Kleinschreibung.
Afaik kümmert sich Scrabble nicht darum, oder?
Denk nicht das sich Scrabble drum kümmert. Aber um die Groß-/Kleinschreibung zu ignorieren sollte es ausreichen das in create_key einfach string.lower() gemacht wird.

?=? schrieb:
Übrigens scheint Python beim erzeugen des Dictionaries übrigens etwas schneller zu sein, als Java.
Verwundert mich da Python öfters langsamer als Java ist. Dies ist mir besonders bei File I/O aufgefallen. Das war in Java einige Größenordnungen schneller. Aber vielleicht liegt das daran das Dictionary ein eingebauter Datentyp ist und somit sehr stark optimiert wurde.
 
Zurück
Oben Unten