Правильный цикл перестановки для алгоритма Verhoeff

StackOverflow https://stackoverflow.com/questions/2872777

Вопрос

Я реализую алгоритм Verhoeff для чековой цифры, но, похоже, существует некоторое разногласия в веб-источниках, поскольку цикл перестановки должен образовывать основу таблицы перестановок.

Википедия Использование: (36) (01589427)

пока по-видимому, Численные получатели используют другой цикл и эта книга Использование: (0) (14) (23) (56789), указанные из статьи 1990 года зимой. Это также отмечает, что Verhoeff использовал одну цитату Википедии.

Теперь мою теорию чисел немного ржаво, но цикл Википедии ясно повторится после 8-й силы, в то время как книга займет 10, несмотря на то, что он говорит, что S ^ 8 = S. Таблица 2.14 (b) имеет другие ошибки в 2 циклах, так что это сомнительное в любом случае.

К сожалению, у меня нет копий оригинальных статей (и слишком крепко платить / противно, что 40-летние знания по-прежнему придерживаются выкупа издателей), ни копией численных рецептов, чтобы проверить (и угодно Установите их Paroania, вызванную копией плагина защиты копии, чтобы просмотреть онлайн.

Так же, кто знает, что правильно? Они оба правильные?

Это было полезно?

Решение

Есть старое издание численных рецептов здесь как PDFS. Алгоритм Verhoeff описан в разделе 20.3. Он использует ту же перестановку, что и статью Википедии.

Другие советы

Перестановка (0) (14) (23) (56789) лучше, чем перестановка (36) (01589427). Это связано с тем, что (36) (01589427) может обнаружить только 88,89% от одной ошибки транспонирования, в то время как (0) (14) (23) (56789) может обнаружить их все. Рассмотрим числовой код 716, который будет дан 0 в качестве контрольной цифры, если (36) используется (01589427). Т.е. код будет 7160. Но, если цифры 1 и 6 транспонированы, эта схема проверки цифры не дает ошибке, поскольку проверка сумма равна нулю. Это не так с (0) (14) (23) (56789).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top