Вниз
Скачать: CL | DM;

Генератор хеш-кодов   Найти похожие ветки 

← →
Psibug ©   (2003-08-16 09:48) [0]

я написал для своего проекта <сабж>.
как определить вероятность совпадения у разных строк
(рядов байтов) хеш-кодов. Очень надо!
фенккз!


← →
Viktorious   (2003-08-16 16:00) [1]

Вообще-то это зависит от типа подаваемых строк,
то есть если в проге будут обрабатываться только английские строки - набор вероятностей будет одним,если русские - другим, etc. Нужно ориентироваться на конкретную задачу, которая перед тобой стоит.


← →
HolACost! ©   (2003-08-16 16:17) [2]

Впринципе никак! Я так понимаю - желание получить оригинальнуюю последовательность для разных строк, то скорее всего придётся обходить дополнительным алгоритмом совпадения (коллизии)!


← →
Умный   (2003-08-16 19:46) [3]

зачем придумывать велосипед, уже существует столько готовых алгоритмов и выкладок по ним...что выбрать можно их них


← →
Psibug ©   (2003-08-16 22:10) [4]

Хеш-коды использоваться будут повсеместно в моём движке.
Я еще не знаю, насколько проект разрастётся (будут ли в во внутридвишковых названиях предметов, локаций, и в именах чтонибудь кроме кириллицы). Не думаю, что имена и названия будут смертельнодлинные, особенно внутридвижковые.
Чтобы не сравнивать строки, пришлось сделать этот генератор.
Достаточно ли этого генератора для ShortString?
Или мне всё переделать в Unicode с двухбайтовыми символами?
(Проект находится в "доэмбриональной" стадии, накодено всего несколько "молекул").
Вот как он выглядит, этот генератор:

type
hashcode=int64;

function CreateHash(const s:wstring):hashcode;
var
i,imax,istep:integer;
tmp:double;
begin
//Result:=0;
istep:=1;//sizeof(wchar);
imax:=Length(s);//*istep;
if imax<=0 then begin Result:=0;exit;end;
i:=1;
tmp:=Ord(s[1]);
try
while i<imax do
begin
inc(i,istep);
if (i>imax) or (s[i]=#0) then break;
tmp:=tmp+Ord(s[i]);
inc(i,istep);
if (i>imax) or (s[i]=#0) then break;
tmp:=tmp*Ord(s[i]);
inc(i,istep);
if (i>imax) or (s[i]=#0) then break;
tmp:=tmp-Ord(s[i]);
inc(i,istep);
if (i>imax) or (s[i]=#0) then break;
tmp:=tmp/Ord(s[i]);
end;
except
tmp:=0.0;
MessageBeep(MB_ICONERROR);
end;
Result:=PInt64(@tmp)^;
end;


← →
Psibug ©   (2003-08-17 18:06) [5]

Чтобы поднять ваш интерес, скажу что за проект. это RPG типа "Morrowind в темечко".


← →
Psibug ©   (2003-08-18 19:45) [6]

<модератору>
Привет. Перенеси этот топик в форум "Игры" как свежий и
удали этот мессаг.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
1-1390
imp403
2003-08-16 12:57
2003.09.01
64x Icon


3-1279
Алексей Петухов
2003-08-11 10:03
2003.09.01
DecemalSeparator в BDE


14-1629
Tornado
2003-08-13 08:26
2003.09.01
форум умер


1-1411
sergg
2003-08-09 18:17
2003.09.01
Русские символы из 98 в ХР


7-1701
KPY
2003-06-18 13:18
2003.09.01
com под win2000




   Наверх