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.