Это почти кросс-пост из Math SE, в то время как объяснение моей проблемы идентично, на Math.SE я просил математическое решение моей проблемы.
Моя проблема заключается в том, что решение, которое я получил на Math.SE, было "конвертировать в базу 35", что, вероятно, очень хороший ответ, но я действительно ужасен по математике и не понимаю, как применить решение в своем коде, Я попытался найти урок по конвертации в разные базы, и это довольно запутанно для меня. Даже глядя на вопрос о преобразовании чисел в базы в JavaScript не дал понять, как именно я буду использовать его для того, что мне нужно делать.
Есть ли простой способ справиться с этим в JavaScript? Здесь вопрос полностью:
У меня необычная проблема программирования, и ее математическая сторона меня озадачила.
Я создал уникальную строку из семи символов, каждая из которых случайным образом выбирается из этих возможностей: ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789
например A6HJ92B
, и мне нужно преобразовать ее в уникальное числовое значение. При преобразовании никакие две версии этой случайной строки не могут быть номером имени.
Я мог бы просто сгенерировать число, а не включать буквы в исходный идентификатор, но, конечно, это означает, что мне нужно увеличить длину моей строки, и возможно, что пользователь моего приложения может захотеть ввести эту строку, так как он идентифицирует свой "сеанс" в приложении, поэтому я хочу, чтобы он был коротким.
Итак, моя идея состояла в том, чтобы создать таблицу, подобную этой:
A : 1,
B : 2,
C : 3,
D : 4,
E : 5,
F : 6,
G : 7,
H : 8,
... you get the idea ...
5 : 31,
6 : 32,
7 : 33,
8 : 34,
9 : 35
И тогда я бы добавил все числа вверх...
A6HJ92B
:
A : 1
6 : 32
H : 8
J : 10
9 : 35
2 : 28
B : 2
1+32+8+10+35+28+2 = 116
... но я понял, что это ошибочная идея, потому что многие возможные строки будут "сталкиваться" или равны одному и тому же числу. Мне нужно, чтобы каждая уникальная строка равнялась уникальному числу.
Поэтому, даже если я умножу каждое значение символа (1*32*8*10*35*28*2 = 5,017,600
), я думаю, что там могут быть и возможные столкновения.
Есть ли способ вычислить это таким образом, чтобы исключить столкновения? Если устранение конфликтов невозможно, какие методы я могу использовать для их минимизации?