Skip to content

Instantly share code, notes, and snippets.

@ozansulukpinar
Last active May 9, 2021 15:58
Show Gist options
  • Save ozansulukpinar/9063701af1026a498823b3ffdeab1651 to your computer and use it in GitHub Desktop.
Save ozansulukpinar/9063701af1026a498823b3ffdeab1651 to your computer and use it in GitHub Desktop.
Validation of Turkish Identification Number
/*
** 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