To bardzo prosty algorytm, który z pewnością można rozwiązać w wielu różnych językach. W Hiszpanii dowody osobiste (znane jako DNI ) składają się z 8 cyfr i znaku kontrolnego. Znak kontrolny jest obliczany za pomocą następującego algorytmu: podziel liczbę przez 23, weź pozostałą część operacji i zastąp ją znakiem zgodnie z poniższą tabelą:
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
Jeśli DNI należy do osoby obcej mieszkającej w Hiszpanii, pierwsza cyfra zmienia się na X, Ylub Zi to nazywa się NIE . W takim przypadku przed obliczeniem znaku kontrolnego wprowadza się następujące podstawienia:
X Y Z
0 1 2
Istnieje wiele kalkulatorów online, które pomagają uzyskać znak kontrolny, ale jak krótkie jest napisanie tego kodu? Napisz algorytm (program lub funkcję), który otrzyma a stringz numerem DNI (który zawsze będzie się składał z 8 znaków alfanumerycznych) i zwróci tylko jeden obliczony znak kontrolny i nic więcej (nowa linia jest akceptowana).
Uwagi:
- Nazwa DNI jest zawsze zapisywana wielkimi literami, ale w algorytmie możesz wybrać, czy dane wejściowe i wyjściowe mają być pisane wielkimi lub małymi literami, po prostu zachowaj spójność.
- W rzeczywistości niektóre NIE wydane przed 2008 rokiem mają 8 cyfr po
X,YlubZ, ale dla celów tej gry można uznać, że mają 7 cyfr, tak jak obecnie. - Możesz wziąć pod uwagę, że ciąg wejściowy zawsze będzie miał 8 znaków, ale jeśli nie są one w formacie „8 cyfr” ani w formacie „[XYZ] plus 7 cyfr”, musisz zwrócić błąd (do wyboru) lub po prostu rzucić wyjątek.
Przypadki testowe:
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>
To jest golf golfowy , więc wygrywa najkrótszy kod dla każdego języka!