这是一个非常非常简单的算法,我相信可以用许多不同的语言解决。在西班牙,身份证(称为DNI)由8个数字和一个控制字符组成。控制字符是通过以下算法计算的:将数字除以23,执行其余操作,然后根据此表将其替换为字符:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
T R W A G M Y F P D X B N J Z S Q V H L C K E
如果DNI属于生活在西班牙的外籍人士,第一个数字更改为X
,Y
或Z
它被称为NIE。在这种情况下,在计算控制字符之前进行以下替换:
X Y Z
0 1 2
在线上有很多计算器可以帮助您获得控制字符,但是,您能编写多长时间的代码?编写一个算法(程序或函数),该算法将接收一个string
带有DNI编号(将始终由8个字母数字字符组成)的a,并仅返回计算出的单个控制字符,仅返回一个(接受尾随换行符)。
笔记:
- DNI始终以大写形式编写,但是在算法中,您可以选择输入和输出为大写或小写,只要保持一致即可。
- 在现实生活中,2008年之前发行的某些NIE在
X
,Y
或之后有8位数字Z
,但就本游戏而言,您可以认为它们现在有7位数字。 - 您可以认为输入字符串将始终包含8个字符,但是如果它们不是“ 8位数字”格式,也不是“ [XYZ]加7位数字”格式,则必须返回错误(您选择的错误)或直接抛出一个例外。
测试用例:
00000010 -> X (HRM Juan Carlos I's DNI number)
01234567 -> L
98765432 -> M
69696969 -> T
42424242 -> Y
Z5555555 -> W (Z=2)
Y0000369 -> S (Y=1)
A1234567 -> <Error code or exception>
1231XX12 -> <Error code or exception>
这是代码高尔夫球,因此每种语言的最短代码可能会胜出!