PavelK
@PavelK

Как составить хэш-функцию по интересным условиям?

Приветствую!
В общем требуется составить хэш функцию,
если точнее, функцию, которая возращала бы одинаковое целочисленное значение при следующих критериях:

на вход поступают два целочисленных числа, они всегда уникальны но могут быть равны друг другу
например f(2,2) = 8865, f(6,9) = 2341413 и тд

хотелось бы что бы когда в функцию передаётся первое число равно например -1 (либо любое другое отрицательное значение, либо 0), а второе равно 2 то функция выдавала бы 8865 (из примера выше)
или наоборот, когда первое число 2, второе -1, то функция то же выдавала бы 8865
т.е.
f(6,9) = 2341413
f(-1,9) = 2341413
f(6,-1) = 2341413

Числа могут быть любые положительные целые, но нельзя что бы какое-то число было неиспользуемым.

Подскажите, как можно реализовать не задействую дополнительные списки и прочее для хранения значений, т.е. оперирую математическими операциями (степени, корни, факториалы,что угодно) ?
  • Вопрос задан
  • 390 просмотров
Пригласить эксперта
Ответы на вопрос 2
bobrovskyserg
@bobrovskyserg
Если порядок неважен, пару следует упорядочить.
Если при наличии в паре двойки хэш-функция всегда отдаёт 8865, значит, отсортировать надо по признаку "важный-неважный", например двойка - важная, важнее -1, и строить хэш по двойке. Так поступать с неположительными парами к двойке, а с другими?
Дальше продвинуться невозможно - никаких других условий не наложено, кроме как "нельзя что бы какое-то число было неиспользуемым".
Попробуйте переформулировать задачу.
Ответ написан
Комментировать
По Вашему условию :
f(6,9) = 2341413, значит f(6,-1) = 2341413
но
f(6,3) = 83746836, значит f(6,-1) = 83746836

Противоречие в условии - такая функция нереализуема
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы