[linux-l] python

Olaf Radicke olaf_rad at gmx.de
Mo Mai 27 22:37:51 CEST 2002


Hi,
ich bin hier gerade am grübeln. In den Editor
den ich gerade proge wollte ich eine Auto-Wort-
Komplementierung integrieren. Sprich: das Prog
soll versuchen zu erraten was ich gerade schreiben 
will. So ähnlich wie in der Adressen-Zeile von
Mozilla. Wo man anfängt ein zu tippen www.bel
und das zu www.belug.de ergänzt wird, weil das
noch im im Temp. ist

Es sollen also alle Wörter die geschrieben werden
gespeichert werden. Dann soll das nächste Wort
was eingetippt wird verglichen werden mit dehnen
die schon geschrieben wurden. Wenn es mehrere Wörter
gibt die passen, soll Das vorgeschlagen werden
was bisher am häufigsten vor kamm.

Zunähst dachte ich an einen Array. Wird ein Wort
geschrieben was es noch nicht im Array gibt wird
es mit "x.insert(0, Wort)" an den Anfang gestellt. 
Existiert es schon wird es, wenn es nicht am Anfang
steht, dort hin verschoben. Die nicht so häufig
verwendeten Wörter wandern so allmählich zum ende.

Das geschriebene Wort wird dann mit den Elementen
des Array, von Vorne nach hinten verglichen. Das
erste Element das eine Übereinstimmung hat wir
vorgeschlagen, da es am Anfang der Liste war hat
es die größte Wahrscheinlichkeit richtig zu sein,
weil es bisher am häufigsten geschrieben wurde.

Was mir daran nicht gefällt ist, das der ganze
Array im Speicher gehalten wird. Und das es nach
einer weile in dem Array aussieht wie in einen
schweitzer Käse, weil ständig mittendrin Elemente 
gelöscht werden. Und es wird immer länger.


Die zweite Variante währe mit DBM. Das würde
den Speicher schonen. Und da könnte ich explizit 
zählen wie oft ein Wort bisher vorgekommen ist. 
Aber dafür müsste ich im einer aufwendigen 
Sortierschleife den kompletten Hash (b.z.w."Dictionary") 
durchgehen. Was dann bei ensprächend vielen
einträgen dauern kann.

Ich hatte auch schon an ein zwei demensionales
Array gedacht, aber das würde nur die Nachteile
der beiden Lösungen von Oben vereinen.

Mfg Olaf    






Mehr Informationen über die Mailingliste linux-l