ВходНаше всё Теги codebook PARTS Поиск Опросы Закон Воскресенье
27 сентября
/998786
Топик полностью
fk0 (25.04.2020 14:26, просмотров: 428) в ответ на докладываю. провел исследование алгоритма "хэша". оказывается так можно было:) - автор: Vit
Это полумера, которая здесь и сейчас работает и неизвестно когда препонесет сюрприз. И даже если так, то хотя бы следовало взять адекватный rolling hash, по двум причинам: 

1) суммирование -- плохой хеш и даст массу коллизий (тем более 2 байта -- это издевательство над здравым смыслом). Я бы рекомендовал выучить наизусть FNV1a хеш -- он очень прост и дает хороший результат (http://www.isthe.com/chongo/tech/comp/fnv/).


2) проблема с изменяющимися ответами остаётся, когда фактически интересует совпадение части строки, а не вся строка: здесь работает rolling hash (https://en.wikipedia.org/wiki/Rolling_hash), но здесь, к сожалению, обрастает сложностями: нужно или хеш пересчитывать для 1, 2, 3, 4... символов (благо оно рекурсивно), либо параллельно считать N-хешей для разных длин подстрок.


3) а почему рассматривается только позитивный сценарий -- вот это главный косяк такого недопарсера. Ведь запросто можно получить разнообразие негативных ответов! Что тогда? Таймаут и ребут? Но ведь не все ошибки ребутом кончаются.

[ZX]
Ответить
Ответы