マイナンバーが届いたので、マイナンバーのチェックデジットを計算するを参考にscalaでマイナンバー検証コードを書いてみました。
def validateMyNumber(myNumber: String): Boolean = {
if (myNumber.length != 12 || !myNumber.forall(_.isDigit)) {
return false
}
val remainder =
(1 to 11).map(i => myNumber(11 - i).asDigit * (if (i <= 6) i + 1 else i - 5)).sum % 11
val checkDigit = myNumber.last.asDigit
if (remainder <= 1) {
checkDigit == 0
} else {
checkDigit == 11 - remainder
}
}
結果
validateMyNumber("123456789010") // false
validateMyNumber("123456789011") // false
validateMyNumber("123456789012") // false
validateMyNumber("123456789013") // false
validateMyNumber("123456789014") // false
validateMyNumber("123456789015") // false
validateMyNumber("123456789016") // false
validateMyNumber("123456789017") // false
validateMyNumber("123456789018") // true
validateMyNumber("123456789019") // false
合ってそうなので、届いた自分のマイナンバーを入れてみたらちゃんとtrueが返ってきました。
よかったよかった。