Теперь я некоторые наборы целых чисел, говорим:Используя набор целых чисел для генерации уникального ключа
set1 = {int1, int2, int3};
set2 = {int2, int3, int1};
set3 = {int1, int4, int2};
Порядка или цифры не принимаются во внимание, так set1 и set2 одинаковы, в то время как set3 не с двумя другими.
Теперь я хочу сгенерировать уникальный ключ для этих множеств, чтобы отличить их, таким образом, set1 и set2 должны генерировать один и тот же ключ.
Я думаю, что это какое-то время, мысли, как суммировать целые числа, пришли мне в голову, но могут быть легко доказаны неправильно. Отсортируйте комплект и сделайте
key = n1 + n2*2^16 + n3*2^32
может быть возможным способом, но мне интересно, можно ли это решить более элегантно. Ключ может быть целым или строковым.
Значит, у кого-нибудь есть идея решить это как можно быстрее? Или любые материалы для чтения приветствуются.
Дополнительная информация: Цифры на самом деле цвета так каждое целое число меньше, чем 0xffffff
Спасибо! Оба способа очень эвристичны. – fabregaszy
Не совсем эвристический. Это простые механические преобразования. http://en.wikipedia.org/wiki/Heuristic ... соответствующая эвристика здесь будет: «множества небольших целых чисел наиболее эффективно кодируются в битовые строки», тогда как «любой набор, содержащий более крупные целые числа, лучше рассматривать как строку цифры ") –