Я делаю функцию, которая преобразует число в строку с предопределенными символами.Оригинал, я знаю.Я начал это, потому что это казалось забавным в то время.Делать самостоятельно.Ну, это расстраивает и не весело.
Я хочу, чтобы он был похож на двоичный, так как любой левый символ стоит больше, чем его правая соседка.Двоичный код неэффективен, потому что каждый бит имеет только 1 положительное значение.Xnary эффективен, потому что «бит» никогда не бывает 0.
Набор символов (в данном случае): A - Z
.
A = 1 ..
Z = 26
AA = 27 ..
AZ = 52
BA = 53 ..
BZ = 2 * 26 (B) + 26 * 1 (Z) = 78... Right?
ZZ = 26 * 26 (Z) + 26 * 1 (Z) = 702?? Right??
Я нашел this здесь , но там AA
совпадает с A
и AAA
.Результатом функции никогда не будет AA
или AAA
.
Строка A
отличается от AA
и AAA
, поэтому число также должно быть.(В отличие от двоичного 1
, 01
, 001
и т. Д.) И поскольку более длинная строка всегда более ценна, чем более короткая ... A < AA < AAA
.
Имеет ли это смысл?Я пытался объяснить это раньше и потерпел неудачу.Я также пытался сделать это раньше.=)
Самое важное: начиная с A < AA < AAA
, значение 'my' ABC
выше, чем значение другого скрипта.Другое отличие: мой сценарий не существует, потому что я продолжаю терпеть неудачу.
Я пробовал с этот алгоритм :
N = 1000, Size = 3, (because 26 log(1000) = 2.x), so use 676, 26 and 1 for positions:
N = 1000
P0 = 1000 / 676 = 1.x = 1 = A
N = 1000 - 1 * 676 = 324
P1 = 324 / 26 = 12.x = 12 = L
N = 324 - 12 * 26 = 12
P1 = 12 / 1 = 12 = L
1000 => ALL
Звучит справедливо?Видимо это дерьмо.Потому что:
N = 158760, Size = 4, so use 17576, 676, 26 and 1
P0 = 158760 / 17576 = 9.x = 9 = I
N = 158760 - 9 * 17576 = 576
P1 = 576 / 676 = 0.x = 0 <<< OOPS
Если 1
равно A
(самый первый из xnary), что такое 0
?Невозможно, что это такое.
Так что это бюст.Другой ( на jsFiddle ) также является бюстом, потому что A != AA != AAA
, и это факт.
Так чего мне не хватало на несколько долгих ночей?
О, кстати: если вам не нравятся цифры, не читайте это.
PS.Я пытался найти похожие вопросы, но ни один из них не был достаточно похожим.Одна из ссылок наиболее похожа, но «неисправна» ИМО.