Альтернативная базовая таблица для алгоритма Дамма

Алгоритм Damm отлично подходит для обработки контрольных цифр https://en.wikipedia.org/wiki/Damm_algorithm

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

Поэтому я должен использовать разные базовые таблицы для каждой сущности. Базовая таблица является полностью антисимметричной квазигруппой с n=10. Пример из Википедии:
- 0 1 2 3 4 5 6 7 8 9
0 0 3 1 7 5 9 8 6 4 2
1 7 0 9 2 1 5 4 8 6 3
2 4 2 0 6 8 7 1 3 5 9
3 1 7 5 0 9 8 3 4 2 6
4 6 1 2 3 0 4 5 9 7 8
5 3 6 7 4 2 0 9 5 8 1
6 5 8 6 9 7 2 0 1 3 4
7 8 9 4 5 3 6 2 0 1 7
8 9 4 3 8 6 1 7 2 0 5
9 2 5 8 1 4 3 6 7 9 0

Как мне сгенерировать второй, отличающийся от n=10?

2 ответа

Решение

Вторая таблица для n=10 приведена здесь:

http://www.md-software.de/math/DAMM_Quasigruppen.txt

Другой подход состоит в том, чтобы использовать ту же таблицу, но начинать с другого начального значения для промежуточной цифры, например, 1 вместо 0. Тогда контрольная цифра всегда отличается, но недостатком является то, что первые 1 не изменят контрольную цифру, поэтому может подходить только для номеров фиксированной длины.

Вот еще одна таблица для n=10, происхождение неизвестно. Предположительно антисимметричный.YMMV

      0 9 8 7 6 5 4 3 2 1
1 0 5 8 7 6 9 4 3 2
2 1 0 9 8 7 6 5 4 3 
3 2 1 0 5 8 7 6 9 4 
4 3 2 1 0 9 8 7 6 5 
9 4 3 2 1 0 5 8 7 6 
6 5 4 3 2 1 0 9 8 7
7 6 9 4 3 2 1 0 5 8
8 7 6 5 4 3 2 1 0 9
5 8 7 6 9 4 3 2 1 0
Другие вопросы по тегам