Xnary (как двоичный, но другой) подсчет

Я делаю функцию, которая преобразует число в строку с предопределенными символами. Оригинал, я знаю. Я начал это, потому что в то время это казалось забавным. Самостоятельно. Что ж, это неприятно, а не весело.

Я хочу, чтобы он был похож на двоичный, так как любой левый символ стоит больше, чем его правый сосед. Двоичный формат неэффективен, потому что каждый бит имеет только 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??

Я нашел это здесь , но там AA совпадает с A и AAA . Результатом функции никогда не будет AA или AAA .

Однако строка A отличается от AA и AAA , поэтому число должно быть тоже. (В отличие от двоичных 1 , 01 , 001 и т. Д.) И поскольку более длинная строка всегда более ценна, чем более короткая ... A .

Есть ли в этом смысл? Я пытался объяснить это раньше, но у меня ничего не вышло. Я тоже пробовал делать это раньше. =)

Самое главное: поскольку A , значение 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. Я пробовал искать похожие вопросы, но ни один из них не достаточно похож. Одна ссылка наиболее похожа, но «ошибочна» ИМО.

6
задан Community 23 May 2017 в 12:03
поделиться