= 0; $i--) { $code_point = array_search($input[$i], self::VALID_CHARS, true); $addend = $factor * $code_point; $factor = ($factor === 2) ? 1 : 2; $addend = ($addend / $n) + ($addend % $n); $sum += $addend; } $remainer = ($sum % $n); $checkCodePoint = ($n - $remainer) % $n; return self::VALID_CHARS[$checkCodePoint]; } }