Судя по вашему вопросу и оставленным комментариям, я бы сказал, что вашу проблему невозможно решить.
Позвольте мне объяснить.
Вы говорите, что вам нужен уникальный хеш из вашей комбинации, поэтому давайте сделаем это правило # 1:
1: Требуется уникальный номер для представления комбинации произвольного числа цифр / чисел
Хорошо, тогда в комментарии вы сказали, что, поскольку вы используете довольно много чисел, хранить их в виде строки или чего-то еще в качестве ключа к хеш-таблице невозможно из-за ограничений памяти. Итак, давайте перепишем это в другое правило:
2: невозможно использовать фактические данные, которые использовались для создания хэша, поскольку их больше нет в памяти
По сути, вы пытаетесь взять большое число и сохранить его в гораздо меньшем диапазоне чисел, сохраняя при этом уникальность.
Извините, но вы не можете этого сделать.
Типичные алгоритмы хеширования вырабатывают относительно уникальные значения хеш-функции, поэтому, если вы не готовы принимать коллизии, в том смысле, что новая комбинация может быть помечена как "уже увиденная", даже если это не так, значит, вы вне удачи.
Если вы попробуете битовое поле, где каждая комбинация имеет бит, который равен 0, если его не видели, вам все равно потребуется большой объем памяти.
Для перестановки в n = 20, которую вы оставили в комментарии, у вас есть 20! (2 432 902 008 176 640 000) комбинаций, которые, если вы попытаетесь просто сохранить каждую комбинацию как 1-бит в битовом поле, потребуют 276 589 ТБ памяти.
Вам придется ограничить сферу своей деятельности.