Tonguç Yumruk'un Weblog'u
Anlık olaylar, fikirler, gudik ismail vs...

Sun, 08 May 2011

İş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.

[21:34] | [/kod] | # | G! |
Elektrikli Posta
Uptime
1 yıl, 26 gün, 4 saat, 31 dakika
Çocuklara Bilgisayar
Kategoriler
/ (201)
  dev/ (13)
  kod/ (28)
  life/ (2)
  linux/ (38)
    freedays/ (2)
    senlik/ (0)
      2006/ (15)
  misc/ (58)
  mobil/ (3)
  musiki/ (18)
  net/ (10)
  tech/ (9)
  web/ (5)
Zaman Makinesi
< May 2011 >
SuMoTuWeThFrSa
1 2 3 4 5 6 7
8 91011121314
15161718192021
22232425262728
293031    
Kapı Komşuları
Güzel Siteler
Ivır zıvır
XML Feed

FSF Associate Member: 2040

Powered by PyBlosxom

Valid XHTML 1.0!