Я пытаюсь выполнить простую проверку номеров кредитных карт. Я читал о алгоритме Луна в Википедии:
- Подсчет с контрольной цифры, которая является самой правой, и перемещение слева, удвоить значение каждой второй цифры.
- Суммируйте цифры продуктов (например, 10: 1 + 0 = 1, 14: 1 + 4 = 5) вместе с удвоенными цифрами от исходного номера.
- Если суммарный модуль 10 равен 0 (если сумма заканчивается в нуле) то число действительно в соответствии с формулой Луна; иначе это недействительно.
В Википедии описание алгоритма Луна очень легко понять. Тем не менее, я также видел другие реализации алгоритма Луна на Rosetta Code и в других местах.
Эти реализации работают очень хорошо, но я смущен тем, почему они могут использовать массив для выполнения этой работы. Массив, который они используют, по-видимому, не имеет отношения к алгоритму Луна, и я не вижу, как они достигают шагов, описанных в Википедии.
Почему они используют массивы? Каково их значение и как они используются для реализации алгоритма, описанного в Википедии?