Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, -rsdn-, Вы писали:
R>>есть один тест, с использованием словаря new Dictionary<long, long>(comparer)
R>>в общем ключи подставляются в словарь такие что их хеш вызывает много коллизий, помогите придумать другую функцию хеширования
S>1. Проблема точно в коллизиях хэша, а не в самом алгоритме/выбранном контейнере?
S>2. Если не подходит простой xor — можно взять классический
S>S> public static int CombineHashCodes(int h1, int h2)
S> {
S> return (h1 << 5) + h1 ^ h2;
S> }
S>
S>(используется в System.Tuple и в ряде других типов) или посмотреть на типовые наборы данных и подобрать для них любую другую функцию.
Tuple круто, но у меня long obj параметр хэш функции. дело в том что система которая тестирует код с багами... поэтому можно вести верное решение, ответ будет вроде Runtime Error. решилось все, я использовал | (или) вместо ^. + не прошел, обычно выдавало Runtime Error, хотя я думаю это означало time limit