Проверьте весовые цифры, которые никогда не будут сталкиваться - PullRequest
1 голос
/ 05 июля 2011

Я подумал о реализации простой контрольной цифры с использованием взвешенной суммы цифр по модулю 10. Кроме того, в качестве контрольной цифры я хочу «злоупотребить» контрольной цифрой, чтобы определить, какой из двух пулов (например, номера статей) и номера клиентов) номер принадлежит.

Согласно Википедии рекомендуется использовать 1, 3, 7 и 9 в качестве веса, поэтому, например, я мог выбрать:

Article Numbers: Weights 1, 3, 7, 1, 3, 7, ...
Customer Numbers: Weights 7, 9, 1, 7, 9, 1, ...

Number 1234 as an Article Number (1*1+2*3+3*7+4*1 mod 10 = 2): 12342
Number 1234 as a Customer Number (1*7+2*9+3*1+4*7 mod 10 = 6): 12346

Проблема в том, что иногда это дает одинаковую контрольную цифру для обеих настроек веса:

Number 1098 as an Article Number (1*1+0*3+9*7+8*1 mod 10 = 2): 10982
Number 1098 as a Customer Number (1*7+0*9+9*1+8*7 mod 10 = 2): 10982

Могу ли я выбрать вес пулов номеров таким образом, чтобы для любого данного исходного номера гарантировалось, что контрольная цифра никогда не будет одинаковой для обоих пулов?

1 Ответ

0 голосов
/ 05 июля 2011

Я сомневаюсь, что это возможно, хотя мне бы пришлось провести исчерпывающую проверку, чтобы быть уверенным.

Задумывались ли вы об использовании четных чисел для номеров статей и нечетных чисел для номеров клиентов или чего-то подобного?

...