これは非常に単純なアルゴリズムであり、多くの異なる言語で解決できると確信しています。スペインでは、IDカード(DNIとして知られる)は8つの数字と1つの制御文字で構成されています。制御文字は、次のアルゴリズムを使用して計算されます。数値を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
またはNIEZ
と呼ばれます。この場合、制御文字を計算する前に次の置換が行われます。
X Y Z
0 1 2
オンラインで制御文字を取得するのに役立つ計算機はたくさんありますが、そのコードをどれくらい短く書くことができますか?string
DNI番号(常に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なので、各言語の最短コードが勝つかもしれません!