Last active
May 9, 2021 15:58
-
-
Save ozansulukpinar/9063701af1026a498823b3ffdeab1651 to your computer and use it in GitHub Desktop.
Validation of Turkish Identification Number
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
** Properties of Turkish Identification Number | |
* Every Turkish citizen has unique one of it. | |
* It must consist of eleven digits. | |
* Last digit must be even. | |
* First digit cannot be zero. | |
* The sum of first, third, fifth, seventh and | |
nineth digits is multiplied by seven. The sum | |
of second, fourth, sixth and eighth digits is | |
substracted from it. When that number is | |
divided by ten, the remainder must be equal | |
to tenth digit. | |
* When the sum of the first ten digits is divided | |
by ten, the remainder must be equal to eleventh | |
digit. | |
* When number 29999 is substracted from first nine | |
digits, identification number of previous person | |
can be found. | |
*/ | |
function checkNumber(number) { | |
var result = true; | |
var numbers = []; | |
while (number) { | |
numbers.push(number % 10); | |
number = Math.floor(number / 10); | |
} | |
numbers.reverse(); | |
var length = numbers.length; | |
if (length != 11) | |
result = false; | |
var eleventhNumber = numbers[(length - 1)]; | |
if (eleventhNumber % 2 != 0) | |
result = false; | |
var firstNumber = numbers[0]; | |
if (firstNumber == 0) | |
result = false; | |
var sumOfOddNumbers = numbers[0] + numbers[2] + numbers[4] + numbers[6] + numbers[8]; | |
var sumOfEvenNumbers = numbers[1] + numbers[3] + numbers[5] + numbers[7]; | |
var guessNumberForTenthNumber = (((sumOfOddNumbers * 7) - sumOfEvenNumbers) % 10); | |
var tenthNumber = numbers[9]; | |
if (tenthNumber != guessNumberForTenthNumber) | |
result = false; | |
var guessNumberForEleventhNumber = ((sumOfOddNumbers + sumOfEvenNumbers + tenthNumber) % 10); | |
if (eleventhNumber != guessNumberForEleventhNumber) | |
result = false; | |
return result; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment