Re[8]: Хэш для диапазона дат
От: Sinclair Россия https://github.com/evilguest/
Дата: 23.03.17 13:27
Оценка:
Здравствуйте, Serginio1, Вы писали:
S>Был вопрос как сделать хэш по двум датам.
Нет, вопрос был как сделать хэш так, чтобы потом можно было сравнивая два хэша сказать, что они пересекаются.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[9]: Хэш для диапазона дат
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 23.03.17 13:29
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, Serginio1, Вы писали:

S>>Был вопрос как сделать хэш по двум датам.
S>Нет, вопрос был как сделать хэш так, чтобы потом можно было сравнивая два хэша сказать, что они пересекаются.
Тогда прошу прощения. Не внимательно прочитал.
и солнце б утром не вставало, когда бы не было меня
Re[7]: Хэш для диапазона дат
От: vmpire Россия  
Дата: 24.03.17 08:04
Оценка:
Здравствуйте, kov_serg, Вы писали:

W>>>Вот уже кто-то успел объединить две идеи: http://rsdn.org/forum/alg/6734164.1
Автор: kov_serg
Дата: 23.03.17
Правда взяв при этом зачем-то более сложный способ хеширование по сравнению с тривиальным. Но если так требует чувство прекрасного, то почему бы и нет?

V>>Ну так это не хеширование Это упаковка двух дат в один long и распаковка при сравнении.
V>>Количество различных хешей равно количеству различных пар.

_>

_>Идеальной хеш-функцией называется такая функция, которая отображает каждый ключ из набора S во множество целых чисел без коллизий. В математике такое преобразование называется инъективным отображением.


_>Что шарики бракованные? Не радуют?

Не, не радуют. Я согласен, что это решение формально под данное определение подпадает.
Но всё-таки мне кажется (субъективно, не настаиваю, что это так), что не это имелось в виду в начальной постановке задачи.
Потому, что такое решение можно получить намного проще и читаемей:
struct DateRange
{
    public int UnixTimeDateMin;
    public int UnixTimeDateMax;
}
...
long hash = (long)DateRangeInstance;

Хотя, топикстартер отмалчивается, видимо, это ему всё равно уже не надо.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.