-
Notifications
You must be signed in to change notification settings - Fork 0
Luhn
do- edited this page Sep 22, 2024
·
3 revisions
Luhn
— класс-наследник Check
, вычисляющий контрольную сумму по алгоритму Луна.
Используется в реализации BankCard.
const c = new Luhn (totalLength)
Имя | Описание |
---|---|
totalLength |
Общее количество цифр в коде (valueLength + checkSumLength ) |
checkSumLength |
Количество цифр в контрольной сумме: 1 |
valueLength |
Количество цифр в коде за вычетом контрольной суммы |
modulus1 |
10 |
isToDouble |
Boolean-значение, указывающее, следует ли удваивать следующее слагаемое |
Прибавляет к накопленной сумме значение digit
:
- удвоенное при
isToDouble
- за вычетом
9
при превышении9
и переключаетisToDouble
на обратное значение.
В основном сводится к вызову родительского метода, но:
- до него устанавливает
isToDouble
в значение для первой слева цифры (совпадает с чётностьюtotalLength
) - после — подменяет
this.sum
на значение, полученное вычитанием из 10 последней цифры накопленной суммы (то есть, собственно, контрольное число Луна).