이것은 매우 간단한 알고리즘으로 많은 다른 언어로 해결할 수 있다고 확신합니다. 스페인에서는 ID 카드 ( 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
제어 문자를 얻는 데 도움이되는 많은 계산기가 온라인에 있지만 그 코드를 얼마나 짧게 작성할 수 있습니까? stringDNI 번호 (항상 8 자리 영숫자로 구성됨 )를 수신하고 계산 된 단일 제어 문자 만 반환하고 후행 줄 바꿈은 허용하지 않는 알고리즘 (프로그램 또는 함수)을 작성 하십시오.
노트:
- DNI는 항상 대문자로 작성되지만 알고리즘에서 입력 및 출력을 대문자 또는 소문자로 선택할 수 있습니다.
- 실제로 2008 년 이전에 발행 된 일부 NIE는
X,Y또는 뒤에 8 자리 숫자를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>
이것은 code-golf 이므로 각 언어마다 가장 짧은 코드가 이길 수 있습니다!