Zum Hintergrund:
Beim Zappen durch die Programme bin ich wieder mal bei 9live hängen geblieben. Es galt ein sogenanntes Schlangenwort zu finden. Insgesamt 9 Buchstaben sollen neu sortiert ein vorhandenes Wort bilden. Als Gewinn lockten die üblichen zig-tausend EURO (morgen auf meinem Konto), Fernsehen, iPad, Freianrufe und noch vieles mehr!
Nach ein paar Minuten hatte ich dann die Lösung heraus, wobei die Buchstaben immer so geschickt angeordnet sind, dass sie eine komplett falsche Fährte legen.
Nachdem der Lösungsprozess doch etwas langwieriger war, stellte ich mir die Aufgabe, das schneller zu lösen. Und was ist da naheliegender, als ein kleines Programm zu schreiben.
Schritt 1:
Zuerst wollte ich rausbekommen, wieviele verschiedene Worte aus 9 Buchstaben zu bilden sind. Ich war mir relativ sicher, dass es dafür eine einfache Berechnung gibt. Leider reichen meine Mathematikeinsatzfälle kaum über "plus", "minus", "malnehmen" und "teilen" hinaus. Prozentrechnen ist schon der Horror!
Na gut, alles kein Problem. Bevor ich alle Möglichkeiten zu Papier bringe und hinterher nachzähle, bin ich das natürlich anders angegangen.
Der einfachste Fall ist ja mit einem Buchstaben. Da gibt es auch nur eine Variante.
Nimmt man zwei Buchstaben sind auch zwei Möglichkeiten denkbar. Wer jetzt glaubt, dass das so einfach weitergeht, der hat sich sehr getäuscht. Die dritte Variante habe ich dann tatsächlich zu Papier gebracht und siehe da, es gibt 6 Varianten.
Nach einer kurzen Suche über eine bekannte Suchmaschine fand ich des Rätsels Lösung:
Es handelt sich um die Fakultät, mathematisch eher als n! bekannt.
362.880 Varianten hätte ich also für mein Schlangenwort zu Papier bringen müssen. Da hätte ich bestimmt noch zwei Wochen Urlaub nehmen müssen!
Schritt 2:
Die Fakultät in mein Programm einzubauen verlief ohne Probleme, es gibt für sowas immer fertige Vorlagen im Netz.
Schritt 3:
Um alle Varianten zu erhalten, fand ich glücklicherweise auch ein Script.
Schritt 4:
Die Testphase startet. Ein Schlangenwort mit 5 Buchstaben war nach 6 Minuten gelöst. Bei weiteren zusätzlichen Buchstaben war der Computer unerträglich lange lahmgelegt. Eine andere Überlegung muss her.
Schritt 5:
Es werden alle Buchstaben in alphabetischer Reihenfolge normiert. Es werden alle Varianten mit der normierten Schreibweise abgeglichen und die zutreffenden bleiben erhalten, der Rest fliegt raus. Damit konnten 7 Buchstaben in 15 Minuten geklärt werden.
Schritt 6:
Die Buchstabenlänge der Worte im Wörterbuch wird ermittelt und pro Wortlänge in eine eigene Tabelle gespeichert. Damit werden wieder weniger Datensätze miteinander verglichen. Die Bearbeitungszeit liegt wieder bei 5 Minuten.
Schritt 7:
Jeder Buchstabe hat einen Ascii-Wert, also eine Zahl. Zum Beispiel ist "A" = 65. Damit kann die Summe über alle Buchstaben gebildet werden. Die Zwischentabelle wird dynamisch gefüllt, und zwar nur mit Worten, die in den Zeichen, der Länge und in der Wortsumme übereinstimmen.Das Schlangenwort darf jetzt auch über 10 Zeichen haben, innerhalb wenigen Sekunden wird die Lösung angezeigt oder das Wort fehlt im Wörterbuch.
Erkenntnis:
Der Ansatz, alle Varianten durchzuprobieren, kommt eindeutig von der Überlegung her, wie ich das mit einem Stift und Zettel machen würde. Die elegantere Lösung ist es, den Rechner einfach rechnen zu lassen und Zahlen zu vergleichen.
Was gibt es jetzt noch zu tun? Mein Wörterbuch muss dringend erweitert werden, damit das Lösungswort auch drinsteht, sonst zeigt mir das schicke Programm keine Lösung an.
Und jetzt noch was für die hellen Köpfe, denen meine Rätsel immer zu leicht sind:
welches Wort kann aus "tortearmin" gebildet werden, welches auch in meinem Wörterbuch steht? Da es sich um 10 Buchstaben handelt, wären also 10!, also 3.626.800 Varianten möglich.
Dem ersten, der die Lösung als Kommentar postet, erhält ein Bier...
2 Kommentare:
man merkt, das du Urlaub hast, und lange Fernsehen schaust, denn gestern kam der TERMINATOR doch recht spät, oder....?
;-)
Ätsch, Bier her
Och nö..... das gute Bier. Tut das Not, dass ich das jetzt dir geben muss??
Ne, geht schon klar! Da werd ich mal ein neues Kästchen holen :)
Kommentar veröffentlichen