\documentclass[a4paper]{article} \usepackage[utf-8]{inputenc} \usepackage[german]{babel} \usepackage{url} \usepackage{alltt} \usepackage{multicol} \title{Wie macht man einen Word-Scrambler in Forth?} \ifx\shorttitle\undefined\else \shorttitle{Worte verwürfeln} \fi \author{Ulrich Hoffmann, Michael Kalus} \begin{document} \parskip4pt \maketitle %\begin{center} %\includegraphics[width=0.75\textwidth]{2007-0304/euroforth-gruppenfoto}\\ %\end{center} \begin{multicols}{2} \section{Worte verwürfeln --- scramble words} Ausgangspunkt war eine zufällige Begegnung im Jahr der Mathemathik. In einer Zeitschrift, deren Titel mir, Michael, inzwischen wieder entfallen ist, blieb ich bei dem Link auf Glynns Scrambler hängen. Und begab mich auf die Reise ins Land des Mischens und des Zufalls: \url{http://www.lerfjhax.com/scrambler} So ein Word--Scrambler mischt die Buchstaben in den Worten. Das psychologisch Erstaunliche daran ist, dass wir danach den Text immer noch lesen können! Und besonders dann, wenn wir den Text schon kennen, lesen wir ihn ziemlich flüssig auch in gescrambelter Form. Es scheint, unser Gehirn kann eigentlich gar nicht lesen, sondern erkennt dabei ganzheitliche Symbole, die wir bereits gelernt haben. Jedes Wort ist so ein Symbol. Wir sehen es als Ganzes und buchstabieren eigentlich nur Worte die uns noch unbekannt waren. Schreiben wir selbst etwas auf, sehen wir die Fehler in der Schreibweise zunächst auch gar nicht, weil wir zu gut wissen, was da stehen sollte. Es sceinhct, uensr Ghrein knan eclgetiinh gar nchit lseen, senrdon ekrnnet deabi gheinzahlitce Soybmle, die wir beirets geelnrt heabn. Jdees Wrot ist so ein Smyobl. Wir sheen es als Gneazs und bithaberucsen eitciegnlh nur Wtore, die uns ncoh ubannknet waern. Sceebrhin wir sslbet ewtas auf, sheen wir die Fheler in der Swerhebiscie zhäcusnt acuh gar nchit, wiel wir zu gut wsiesn, was da seethn slltoe. \section{scramble ... } In jenem Land der Algorithmen traf ich Ulli. Unsere simple Version des scramble erlaubt uns nun zu experimentieren - und besser zu verstehen, was Will Glynn wohl gemeint haben könnte, als er schrieb: \glqq Ich habe keine Ahnung, wie oder warum jede Woche tausende Leute hier her kommen, um Worte zu scrambeln. Als Reaktion darauf habe ich mich aber entschlossen, den word scrambler immer noch mal zu machen. Dieses ist inzwischen die dritte oder vierte Überarbeitung...\grqq Unser fundamentales Scramble unterscheidet gar nicht, welche Zeichen getauscht werden sollen. Dem menschlichen Leser entgegen kommen wir lediglich durch die Vorgabe, dass die ersten und letzten Zeichen eines Wortes vom Tausch ausgenommen werden. Sonst macht es uns ja gar keinen Spaß mehr, unser Hirn müht sich vergebens, noch was zu erkennen. Aber mit dieser kleinen Hilfe geht es schon recht gut! Und nun kann man auch studieren, was alles so passiert. Versuche doch mal etwas wie: \begin{verbatim} scramble (.) (.o) ABCE 12345 *bert.bert* \end{verbatim} also Mixturen der Art, dass auch Satzzeichen und Ziffern darin vorkommen. Dann wird schnell klar, dass es nicht immer Sinn machen kann, alles auf die gleiche Weise zu scrambeln. Will man nämlich erreichen, dass das Ergebnis für einen Menschen verständlich bleiben soll, dürften Zahlen, Ziffern, und andere Zeichen als die Buchstaben nicht mitgemischt werden. \section{scramble-word2} Natürlich ist es möglich, dass eine randomisierte Permutation auch mal dazu führt, dass die inneren beiden Zeichen eines Wortes mit nur vier Buchstaben gar nicht getauscht werden. Wir wollen aber nicht, dass so ein Wort gleich bleibt, also tauschen wir in solch einem Fall die inneren beiden Zeichen immer aus. Aber auch bei Worten mit fünf Zeichen gibt es noch optische Probleme. Scramble doch mal \glqq lesen\grqq --- es bleibt oft gleich. Zwar wurden die \glqq e\grqq vertauscht, aber das ist im Ergebnis optisch nicht das, was wir wollten. So bleibt es uns, darüber nachzudenken, wie an dieser Stelle anders verfahren werden könnte, damit die resultierende Sequenz nicht zufällig gleich der Ausgangssequenz ist. Bei Worten mit mehr als fünf Zeichen, also vier und mehr in der Mitte, wird es dann schon sehr unwahrscheinlich, dass beim randomisierten Tauschen noch was gleich bleibt. Ab da kann also einfach drauflosrandomisert werden, finden wir. Statistisch können wir das nicht belegen, es ist mehr so ein Gefühl aus den ersten Beobachtungen. Und auch das Problem der Ziffern und Satzzeichen besteht noch. Beschäftigt man sich also mit algorithmisch hergestellter Unordnung, wie so einer Permutation eines einfachen Arrays, findet man bei Knuth immer was Passendes. Den Algorithmus für unseren Fall bezog er aus Arbeiten von Richard Durstfeld. Und damit sind wir schon im Bereich der Randomisierung, des Mischens und Chiffrierens mittendrin. Wir finden solche Spielereien mit einfachen Grundlagen immer sehr spannend. Warum? Nun, weil wir aus Erfahrung inzwischen weiß, das Jacques Hadamard, ein französischer Mathematiker (8.\ Dezember 1865 -- 17.\ Oktober 1963) (!), mit seiner Beschreibung des kreativen Prozesses ganz richtig lag [3]. Im scharfen Gegensatz zu anderen Autoren seiner Zeit, die auf Sprache setzten und Kognition - und das zieht sich noch immer durch unsere Schulen --- beschrieb er sein eigenes mathematisches Denken als weitgehend wortlos, oft begleitet von mentalen Bildern, die eine vollständige Lösung für ein Problem darstellten. Daraufhin begutachtete er rund 100 der führenden Wissenschaftler seiner Zeit (um 1900), ließ sich schildern, wie sie arbeiteten. Viele ihrer Antworten spiegelten seine Auffassung wider, einige berichteten von mathemathischen Konzepten als Farbzusammensetzungen. Um solche Vorstellungen zu entwicklen, ist es absolut notwendig, herumzuspielen, die Vorgänge sinnlich werden zu lassen, bildlich vor sich zu haben sozusagen. Und wir sind immer begeistert davon, wenn so etwas mit Forth in oft simpler Weise gelingt. Viel Spaß beim Spielen. \end{multicols} \section{Quellen} \begin{tabular}{lp{0.95\textwidth}} {}[1] & Algorithm 235 \emph{Random Permutation} Richard Durstfeld, 2.Jan.1964, San Diego, Calif. Algorithm for generating a random permutation of a finite set. Algorithmus um endliche Sets zufällig zu mischen. Artikel aus den Communications of the ACM volume 7, issue 7\\ {}[2] & Synonyme: Fisher--Yates--Shuffle, Knuth--Shuffle \url{http://en.wikipedia.org/wiki/Knuth_shuffle} und:\\ & Das \glqq mische ein Kartenspiel\grqq-Problem. \url{http://de.wikipedia.org/wiki/Mischen}\\ {}[3] &\emph{The Mathematician's Mind: The Psychology of Invention in the Mathematical Field} Jacques Hadamard\\ &\url{http://press.princeton.edu/titles/5896.htm}\\ &\url{http://en.wikipedia.org/wiki/Jacques_Hadamard#On_creativity}\\ {}[4] & Schicker Word--Scrambler im Browser: \url{http://www.lerfjhax.com/scrambler} \end{tabular} \section{Listing} \begin{quote} \listinginput[1]{1}{2008-01/scrambler.fs} \end{quote} % \end{document}