El código fiscal
Cada persona en Italia tiene un código de identificación único emitido por la oficina tributaria nacional después del registro de nacimiento: el código fiscal (Codice Fiscale). Consulta la pestaña Recursos para obtener más información al respecto.
Dado un diccionario que contiene los datos personales de una persona (nombre, apellido, género y fecha de nacimiento), devuelve los 11 caracteres del código como una cadena siguiendo estos pasos:
Genera 3 letras mayúsculas a partir del apellido, si tiene:
- Al menos 3 consonantes: se utilizan las primeras tres consonantes. (Newman -> NWM).
- Menos de 3 consonantes: las vocales reemplazan los caracteres faltantes en el mismo orden en que aparecen (Fox -> FXO | Hope -> HPO).
- Menos de tres letras: "X" ocupa el tercer lugar después de la consonante y la vocal (Yu -> YUX).
Genera 3 letras mayúsculas a partir del nombre, si tiene:
- Exactamente 3 consonantes: las consonantes se utilizan en el orden en que aparecen (Matt -> MTT).
- Más de 3 consonantes: se utilizan la primera, la tercera y la cuarta consonante (Samantha -> SNT | Thomas -> TMS).
- Menos de 3 consonantes: las vocales reemplazan los caracteres faltantes en el mismo orden en que aparecen (Bob -> BBO | Paula -> PLA).
- Menos de tres letras: "X" ocupa el tercer lugar después de la consonante y la vocal (Al -> LAX).
Genera 2 números, 1 letra y 2 números a partir de la fecha de nacimiento y el género:
- Toma los dos últimos dígitos del año de nacimiento (1985 -> 85).
- Genera una letra correspondiente al mes de nacimiento (Enero -> A | Diciembre -> T) usando la tabla de conversión incluida en el código.
- Para los hombres, toma el día de nacimiento y añade un cero al principio si es menor que 10 (cualquier día 9 -> 09 | cualquier día 20 -> 20).
- Para las mujeres, toma el día de nacimiento y súmale 40 (cualquier día 9 -> 49 | cualquier día 20 -> 60).
Ejemplos
fiscal_code({
"name": "Matt",
"surname": "Edabit",
"gender": "M",
"dob": "1/1/1900"
}) ➞ "DBTMTT00A01"
fiscal_code({
"name": "Helen",
"surname": "Yu",
"gender": "F",
"dob": "1/12/1950"
}) ➞ "YUXHLN50T41"
fiscal_code({
"name": "Mickey",
"surname": "Mouse",
"gender": "M",
"dob": "16/1/1928"
}) ➞ "MSOMKY28A16"Notas
- Las letras del código deben estar en mayúsculas.
- La fecha de nacimiento se proporciona en formato D/M/YYYY.
- La tabla de conversión de los meses ya está en el código inicial.
- Y no es una vocal.