Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Monatskürzel "Jan".."Dec" in 01..12 umwandeln (https://www.delphipraxis.net/15437-monatskuerzel-jan-dec-01-12-umwandeln.html)

hboy 2. Feb 2004 17:25

Re: Monatskürzel "Jan".."Dec" in 01..12
 
Zitat:

Zitat von choose
Ob es ein Poblem der Performance ist, hängt vom Anwendungsfall ab. Was ich weiß ist, dass bei Deiner nunmehr dritten Korrektur folgendes gilt, hboy:
Delphi-Quellcode:
monthbystr('n f')=monthbystr('jan')
Bei der ursprünglichen Lösung von Hagen (die sehr ähnlich zu Deinem Versuch ist) findest Du einen elegenten Ansatz zu diesem Problem. Ein paar Ideen zur Performance sind ebenfalls in diesem Thread zu finden.

bei ihm wärs dann n.f was falsch erkannt würde

negaH 2. Feb 2004 17:34

Re: Monatskürzel "Jan".."Dec" in 01..12
 
Zitat:

bei ihm wärs dann n.f was falsch erkannt würde
Nein, dies kann nicht passieren da mein Code immer nach zB. ".JAN." oder ".OCT." sucht, d.h. die Suchworte "JAN" und "OCT" werden intern um Separatoren erweitert. In deinem Beispiel von "n.f" würde intern nach ".N.F." gesucht und eben NICHT gefunden.

Gruß Hagen

hboy 2. Feb 2004 17:48

Re: Monatskürzel "Jan".."Dec" in 01..12
 
okokok. is ja gut. gute lösung. hab sie vorher beim überfliegen nich gesehn 8)

choose 2. Feb 2004 21:33

Re: Monatskürzel "Jan".."Dec" in 01..12
 
Hallo hboy,
Zitat:

Zitat von hboy
Ausserdem liese sich dieses ord(..) shr...+ord(..) shr...+ord(..) shr... vereinfachen:

var s: string[4];
v: integer absolute s;

selbst unter der Beachtung der Ablage im Speicher (Big Endian vs Little Endian) ist dieser Verleich nicht ganz identisch, weil Du auch bei Strings der Länge 3 immer das bei einer Zuweisung undefinierte vierte Zeichen als Lowbyte des Lowwords des Ints casten würdest...
Mir ist bewusst, dass die vorgestellte Hash-Funktion optimiert werden könnte, insbesondere könnten die Aufrufe von Upcase durch ein einziges and ersetzt werdern- darum ging es aber weniger als um die Tatsache, dass auch eine eineindeutige Lösung mit der Komplexität O(1) für das Problem existiert...

Steffen 2. Feb 2004 21:35

Re: Monatskürzel "Jan".."Dec" in 01..12
 
Und wie würde die Lösung mit der Komplexität O(1) für das Problem aussehen?

choose 2. Feb 2004 21:45

Re: Monatskürzel "Jan".."Dec" in 01..12
 
Das ist die Lösung mit dem Hashing (s.o.): Für jeden Eingabestring wird eine Konstante Zeit O(1) benötigt, egal wie lang er ist oder wieviele Elemente (Monate) es gibt (sofern die Abbildung der Hash-Funktion bijektiv, also eineindeutig, ist- das ist hier der Fall).

Zitat:

Zitat von penibles Gewissen
Nun, tatsächlich (das Compilat) ist die Case-Anweisung selbst nicht ganz "konstant" in ihrer Ausführungszeit aber es entspricht dem äquivalenten Konstrukt in der Programmiersprache Pascal und ließe sich notfalls auch mit einer direkten Indizierung hinbekommen (bei zwölf Elementen wohl idR zu vernachlässigen...)


hboy 2. Feb 2004 22:29

Re: Monatskürzel "Jan".."Dec" in 01..12
 
Zitat:

Zitat von choose
Hallo hboy,
Zitat:

Zitat von hboy
Ausserdem liese sich dieses ord(..) shr...+ord(..) shr...+ord(..) shr... vereinfachen:

var s: string[4];
v: integer absolute s;

selbst unter der Beachtung der Ablage im Speicher (Big Endian vs Little Endian) ist dieser Verleich nicht ganz identisch, weil Du auch bei Strings der Länge 3 immer das bei einer Zuweisung undefinierte vierte Zeichen als Lowbyte des Lowwords des Ints casten würdest...
Mir ist bewusst, dass die vorgestellte Hash-Funktion optimiert werden könnte, insbesondere könnten die Aufrufe von Upcase durch ein einziges and ersetzt werdern- darum ging es aber weniger als um die Tatsache, dass auch eine eineindeutige Lösung mit der Komplexität O(1) für das Problem existiert...

jetzt sei mal nicht so pingelig mit einem verworfenen Ansatz. Dann machste halt noch v:= v and $00FFFFFF;


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:09 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz