裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

マイナンバーのチェックディジット

2015年10月13日 | ブログラミング

以下の関数は,12 桁のマイナンバーを与えると誤入力の有無を通知する。11桁を入力するとチェックディジットを返す。

func = function(n) {
    s = as.character(n)
    n = nchar(s)
    if (n < 11 || n > 12) return("Error")
    s = as.numeric(unlist(strsplit(s, "")))
    d = sum(s[1:11] * c(6:2, 7:2)) %% 11
    d = ifelse(d < 2, 0, 11 - d)
    ifelse(n == 11, d, ifelse(s[12] == d, "OK", "NG"))
}

> func(32111343233)
[1] 1
> func(321113432331)
[1] "OK"
> func(421113332331)
[1] "OK"

最後の 2 つの例を見れば明らかだが,「意図的に」本人のものではないマイナンバーが詐称されると,チェックディジットではチェックできない。

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« シフトと加算 | トップ | マイナンバーのチェックディ... »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事