Este es un algoritmo muy muy simple, que estoy seguro se puede resolver en muchos idiomas diferentes. En España, las tarjetas de identificación (conocidas como DNI ) constan de 8 números y un carácter de control. El carácter de control se calcula con el siguiente algoritmo: divida el número entre 23, tome el resto de la operación y reemplácelo con un carácter de acuerdo con esta tabla:
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
Si el DNI pertenece a una persona extranjera que vive en España, el primer dígito se cambia a X, Yo Zy se llama NIE . En este caso, se realizan las siguientes sustituciones antes de calcular el carácter de control:
X Y Z
0 1 2
Hay muchas calculadoras en línea que lo ayudan a obtener el carácter de control, pero, ¿qué tan corto puede escribir ese código? Escriba un algoritmo (programa o función) que reciba un stringcon el número DNI (que siempre constará de 8 caracteres alfanuméricos) y devuelva solo el carácter de control único calculado y nada más (se acepta una nueva línea final).
Notas:
- El DNI siempre se escribe en mayúsculas, pero en su algoritmo puede elegir que la entrada y la salida sean mayúsculas o minúsculas, solo sea coherente.
- En la vida real, algunos NIE emitidos antes de 2008 tienen 8 dígitos después del
X,YoZ, pero para los propósitos de este juego, puedes considerar que tienen 7 dígitos como lo tienen hoy en día. - Puede considerar que la cadena de entrada siempre tendrá 8 caracteres, pero si no están en el formato "8 dígitos" ni en el formato "[XYZ] más 7 dígitos", debe devolver un error (de su elección) o simplemente lanzar una excepción.
Casos de prueba:
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>
Este es el código de golf , ¡así que puede ganar el código más corto para cada idioma!