Ini adalah algoritma yang sangat sangat sederhana, yang saya yakin dapat diselesaikan dalam banyak bahasa yang berbeda. Di Spanyol kartu ID (dikenal sebagai DNI ) terdiri dari 8 angka dan karakter kontrol. Karakter kontrol dihitung dengan algoritma berikut: bagi angka dengan 23, ambil sisa operasi dan ganti dengan karakter sesuai tabel ini:
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
Jika DNI milik orang asing yang tinggal di Spanyol, digit pertama diubah menjadi X
, Y
atau Z
dan itu disebut NIE . Dalam hal ini, penggantian berikut dilakukan sebelum menghitung karakter kontrol:
X Y Z
0 1 2
Ada banyak kalkulator online yang membantu Anda mendapatkan karakter kontrol, tetapi, seberapa pendek Anda bisa menulis kode itu? Tulis algoritme (program atau fungsi) yang menerima a string
dengan nomor DNI (yang akan selalu terdiri dari 8 karakter alfanumerik) dan mengembalikan hanya karakter kontrol tunggal yang dihitung dan tidak lebih dari itu (baris baru yang tertinggal diterima).
Catatan:
- DNI selalu ditulis dalam huruf besar, tetapi dalam algoritma Anda, Anda dapat memilih input dan output menjadi huruf besar atau kecil, konsisten saja.
- Dalam kehidupan nyata, beberapa NIE yang dikeluarkan sebelum 2008 memiliki 8 digit setelah
X
,Y
atauZ
, tetapi untuk tujuan permainan ini, Anda dapat menganggap mereka memiliki 7 digit seperti saat ini. - Anda dapat mempertimbangkan bahwa string input akan selalu memiliki 8 karakter, tetapi jika mereka tidak dalam format "8 digit" atau format "[XYZ] plus 7 digit", Anda harus mengembalikan kesalahan (pilihan Anda) atau hanya melempar pengecualian.
Kasus uji:
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>
Ini adalah kode-golf , jadi semoga kode terpendek untuk setiap bahasa menang!