O código fiscal
Cada pessoa na Itália tem um código de identificação exclusivo emitido pela autoridade fiscal nacional após o registro do nascimento: o código fiscal (Codice Fiscale). Consulte a aba Recursos para obter mais informações sobre isso.
Dado um dicionário contendo os dados pessoais de uma pessoa (nome, sobrenome, gênero e data de nascimento), retorne os 11 caracteres do código como uma string seguindo estas etapas:
Gere 3 letras maiúsculas a partir do sobrenome, se ele tiver:
- Pelo menos 3 consoantes: são usadas as três primeiras consoantes. (Newman -> NWM).
- Menos de 3 consoantes: as vogais substituem os caracteres ausentes na mesma ordem em que aparecem (Fox -> FXO | Hope -> HPO).
- Menos de três letras: "X" ocupa a terceira posição depois da consoante e da vogal (Yu -> YUX).
Gere 3 letras maiúsculas a partir do nome, se ele tiver:
- Exatamente 3 consoantes: as consoantes são usadas na ordem em que aparecem (Matt -> MTT).
- Mais de 3 consoantes: são usadas a primeira, a terceira e a quarta consoante (Samantha -> SNT | Thomas -> TMS).
- Menos de 3 consoantes: as vogais substituem os caracteres ausentes na mesma ordem em que aparecem (Bob -> BBO | Paula -> PLA).
- Menos de três letras: "X" ocupa a terceira posição depois da consoante e da vogal (Al -> LAX).
Gere 2 números, 1 letra e 2 números a partir da data de nascimento e do gênero:
- Pegue os dois últimos dígitos do ano de nascimento (1985 -> 85).
- Gere uma letra correspondente ao mês de nascimento (Janeiro -> A | Dezembro -> T) usando a tabela de conversão incluída no código.
- Para homens, pegue o dia de nascimento, adicionando um zero no início se ele for menor que 10 (qualquer dia 9 -> 09 | qualquer dia 20 -> 20).
- Para mulheres, pegue o dia de nascimento e some 40 a ele (qualquer dia 9 -> 49 | qualquer dia 20 -> 60).
Exemplos
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
- As letras do código devem estar em maiúsculas.
- A data de nascimento é fornecida no formato D/M/YYYY.
- A tabela de conversão dos meses já está no código inicial.
- Y não é uma vogal.