wdss的blog

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
#把15位身份证号放入字符串s中 可得到输出

s = '11010519491231002x'#测试数据
s = '440524188001010014'#测试数据

s = '110105491231002'
s1 = s.slice(0,6) 
s2 = s.slice(6,9)
s = s1 + '19' + s2
puts s



 

wi = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
idnum = Array.new
for i in (0..16)
  idnum[i] = s.slice(i,1).to_i
end
sum = 0
for i in (0..16)
  sum = sum + (idnum[i]*wi[i])
end
tmps = sum.modulo(11)
IDNUMTAB={
  0=>'1',
  1=>'0',
  2=>'X',
  3=>'9',
  4=>'8',
  5=>'7',
  6=>'6',
  7=>'5',
  8=>'4',
  9=>'3',
  10=>'2'
}
puts IDNUMTAB[tmps]
s = s.slice(0,17) + IDNUMTAB[tmps]
puts s

  

posted on 2009-02-12 22:33  wdss  阅读(627)  评论(0编辑  收藏  举报