ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
998786 Топик полностью
fk0, легенда (25.04.2020 14:26, просмотров: 1019) ответил 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]