Це дуже простий алгоритм, який я впевнений, що його можна вирішити багатьма різними мовами. В Іспанії посвідчення особи (відомі як DNI ) складаються з 8 чисел та контрольного символу. Символ управління обчислюється за наступним алгоритмом: розділіть число на 23, візьміть решту операції та замініть його символом відповідно до цієї таблиці:
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
Якщо DNI належить іноземному особі , яка проживає в Іспанії, перша цифра змінюється на X
, Y
або , Z
і це називається NIE . У цьому випадку перед обчисленням контрольного символу здійснюються такі заміни:
X Y Z
0 1 2
В Інтернеті є багато калькуляторів, які допомагають отримати контрольний символ, але, як коротко ви можете написати цей код? Напишіть алгоритм (програму або функцію), який отримує номер string
з DNI (який завжди буде складатися з 8 буквено-цифрових символів) і повертає лише обчислений єдиний символ управління і нічого більше (приймається новий рядок).
Примітки:
- DNI завжди записується великими літерами, але у алгоритмі ви можете вводити та виводити великі чи малі регістри, просто будьте послідовними.
- У реальному житті, деякі Нуй , випущені до 2008 року мають 8 цифр після
X
,Y
абоZ
, але для цілей цієї гри, ви можете вважати вони мають 7 цифр , оскільки вони мають в даний час. - Ви можете вважати, що рядок введення завжди матиме 8 символів, але якщо вони не є у форматі "8 цифр", а також у форматі "[XYZ] плюс 7 цифр", ви повинні повернути помилку (на ваш вибір) або просто кинути виняток.
Тестові приклади:
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>
Це код-гольф , тому може виграти найкоротший код для кожної мови!