İşte yine yılın o zamanı geldi. Bir blog post ile daha karşınızdayım. Bu seferki konumuz TC kimlik numarası doğrulamak. Aşağıdaki kod parçası ile verilen bir TC kimlik numarasının geçerli olup olmadığını kontrol edebiliyorsunuz. Tabii Haskell elegansıyla. Bon appétit.
(^!) :: Integer -> Integer -> Integer n ^! m = (n `mod` 10^m) `div` 10^(m-1) evenDigits n = [n ^! k | k <- [2,4..]] oddDigits n = [n ^! k | k <- [1,3..]] tckimlikHashes n = (tenthHash, eleventhHash) where oddSum = sum $ take 5 $ tail $ oddDigits n evenSum = sum $ take 4 $ tail $ evenDigits n tenthHash = (7*oddSum - evenSum) `mod` 10 eleventhHash = ((oddSum + evenSum + tenthHash) `mod` 10) tckimlikVerify n = ((n ^! 2) == x) && ((n ^! 1) == y) where (x,y) = tckimlikHashes n
Not: Bu kod parçasıyla yapılabilecek başka şeyler de var tabii. Onları da yaratıcılığınıza bırakıyorum.