Anagrammkalender 2016
Der Anagrammkalender 2016 ist ein Abreißkalender mit 366 verzwickten Anagrammen bekannter Personen aus den Bereichen Kunst, Literatur, Musik, Politik, Pop, Sport und Wissenschaft. Einfach die Buchstaben umsortieren und schon wird "Achilles" zu "Alles ich", "Nofretete" zu "Tortenfee" und "James Bond" zu "Damen-Jobs".
9.514 €
9.500 € Fundingziel
177
Unterstützer*innen
Projekt erfolgreich
22.10.2015

50002110101052100101101000-0001002000 (Teil 2)

Matthias Wiebel
Matthias Wiebel3 min Lesezeit

[ACHTUNG – Blogpost zum Mitdenken]
tl;dr: Alles wurde extrem schlau gelöst! ;)

Heute also, kurz vor den 50%, kommt der zweite Teil von „Wie kommt man auf 366 Anagramme?“. Diesmal mit der Erklärung, wie das verwendete Programm arbeitet und warum es das tut. Wie schon erwähnt, greift das von mir extrem kreativ „anagen“ getaufte Programm auf ein Wörterbuch gültiger Wörter der deutschen Sprache zurück.
Naheliegend wäre es jetzt, jedes dieser Wörter Zeichen für Zeichen mit dem zu anagrammierenden Namen zu vergleichen. Doch leider ist das Arbeiten auf Zeichenketten nicht unbedingt die effizienteste Angelegenheit. Dass Effizienz wichtig ist, lässt sich gut daran erkennen, dass meine erste Version von anagen für das Anagrammieren von „Franz Schubert“ sieben Stunden benötigt hat. Und Franz Schubert ist noch nicht einmal der längste Name im Kalender. Nach einigen Überlegungen und dem Ändern von zwei Zeilen im Programm, ließ sich diese Zeit allerdings um den Faktor 210 auf etwa zwei Minuten reduzieren.
Wie also möglichst effizient auf den Zeichenketten arbeiten? Die Lösung liegt in der Natur der Anagramme versteckt. Anagramme eines Wortes bestehen grundsätzlich aus den gleichen Buchtaben, nur eben in unterschiedlicher Reihenfolge. Die Worte „Geist“ und „Siegt“ haben beide je ein e, ein g, ein i, ein s und ein t. Deshalb zählt das Programm für jede Zeichenkette die Vorkommen der einzelnen Buchstaben und vergisst deren Reihenfolge. Nehmen wir zum Beispiel die Worte „Hallo“, „Lola“ und „Axt“. „Hallo“ hat ein a, ein h, zwei l und ein o. Die Anzahl der Vorkommen wird für jeden Buchtaben des Alphabets dann in Programmschreibweise so festgehalten: „Hallo“ wird 10000001000200100000000000, „Lola“ wird 10000000000200100000000000 und „Axt“ wird mit jeweils einem a, t und x zu 10000000000000000001000100.
Um jetzt zu überprüfen, ob „Lola“ in „Hallo“ enthalten ist, wird die Anzahl der As in „Lola“ von der Anzahl der As in „Hallo“ abgezogen. Ist das Ergebnis der Subtraktion größer oder gleich 0, dann sind in „Hallo“ mehr, oder genauso viele As wie in „Lola“. Das wird dann für alle Buchstaben in „Lola“ gemacht. Sind die Ergebnisse aller Subtraktionen größer oder gleich 0, so ist „Lola“ in „Hallo“ enthalten, was auch tatsächlich der Fall ist. „Axt“ jedoch enthält ein t und ein x mehr als „Hallo“, weshalb die Ergebnisse der Subtraktion da jeweils negativ ausfallen. „Axt“ ist also nicht enthalten. Das Programm stoppt beim ersten negativen Ergebnis, käme also nur bis zum t von „Axt“.
Das Ergebnis der jeweiligen Rechnungen wird direkt in die Buchstabenzähltabelle eingetragen, damit im nächsten Schritt damit weitergearbeitet werden kann. Nach der Subtraktion von „Lola“ bleibt also 0000000100000000000000000 übrig. Da es kein Wort gibt, das nur aus dem Buchstaben h besteht, kann mit „Lola“ kein gültiges Anagramm von „Hallo“ gebildet werden. Jede Wortkombination die auf 00000000000000000000000000 kommt, trägt das Programm allerdings in die Ergebnisliste ein.

Das Problem Zeichenketten miteinander zu vergleichen wurde also in das Problem, Zahlen voneinander abzuziehen überführt. Und wenn Rechner mal etwas gut und effizient können, dann ist es, wie ihr Name schon sagt, rechnen. :)

Puh, so viel Theorie.

Jetzt dürft ihr Euch eine Denkpause gönnen und Euch wieder aufs altbekannte „Weitererzählen! Weitererzählen! Weitererzählen!“ verlagern. Wir haben noch zehn Tage und fast 50%. Ich will das Projekt, ihr wollt das Projekt, los geht’s!

P.S. Der Titel dieses Blogeintrages wurde genauso aufbereitet, wie es das Programm tun würde. Wobei eigentlich keine Ziffern akzeptiert würden. Aber für „'Wie kommt man auf 366 Anagramme'?“ habe ich eine Ausnahme gemacht. ;)

Impressum
Matthias Wiebel
Zanggasse 32
55116 Mainz Deutschland