Questo è un algoritmo molto semplice, che sono sicuro che può essere risolto in molte lingue diverse. In Spagna le carte d'identità (note come DNI ) sono composte da 8 numeri e un carattere di controllo. Il carattere di controllo viene calcolato con il seguente algoritmo: dividere il numero per 23, prendere il resto dell'operazione e sostituirlo con un carattere secondo questa tabella:
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
Se il DNI appartiene ad una persona straniera che vive in Spagna, la prima cifra viene modificato in X, Yo Ze si chiama un NIE . In questo caso, prima del calcolo del carattere di controllo vengono effettuate le seguenti sostituzioni:
X Y Z
0 1 2
Ci sono molti calcolatori online che ti aiutano a ottenere il carattere di controllo, ma quanto tempo puoi scrivere quel codice? Scrivi un algoritmo (programma o funzione) che riceve un stringcon il numero DNI (che sarà sempre composto da 8 caratteri alfanumerici) e restituisce solo il singolo carattere di controllo calcolato e niente di più (viene accettata una nuova riga finale).
Appunti:
- Il DNI è sempre scritto in maiuscolo, ma nel tuo algoritmo puoi scegliere l'input e l'output come maiuscoli o minuscoli, solo essere coerenti.
- Nella vita reale, alcuni NIE emessi prima del 2008 hanno 8 cifre dopo il
X,YoZ, ma ai fini di questo gioco, puoi considerare che hanno 7 cifre come al giorno d'oggi. - Puoi considerare che la stringa di input avrà sempre 8 caratteri, ma se non sono nel formato "8 cifre" né nel formato "[XYZ] più 7 cifre", devi restituire un errore (a tua scelta) o semplicemente lanciare un'eccezione.
Casi test:
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>
Questo è code-golf , quindi può vincere il codice più breve per ogni lingua!