ノルウェーの出生番号は11桁で構成され、次のように構成されています。
DDMMYYiiikk
DD日です(01-31から)MM月(01-12から)YY年です(00-99から)。1900年と2000年を区別しないiii「個人番号」kk2つの制御桁
iii 誕生年と性別によって次のように決定されます
- 0000-1900:無視してください、いくつかの矛盾と特別なケースがあります
- 1900-1999:範囲= 000-499
- 2000-2039:範囲= 500-999
- 女性:偶数(および000)
- 男性:奇数
管理番号は以下の方法で決定されます。
11桁を呼び出します。
d1 d2 m1 m2 y1 y2 i1 i2 i3 k1 k2
次に、制御桁は次の式を使用して計算できます。
k1 = 11 - ((3 * d1 + 7 * d2 + 6 * m1 + 1 * m2 + 8 * y1 + 9 * y2 + 4 * i1 + 5 * i2 + 2 * i3) mod 11)
k2 = 11 - ((5 * d1 + 4 * d2 + 3 * m1 + 2 * m2 + 7 * y1 + 6 * y2 + 5 * i1 + 4 * i2 + 3 * i3 + 2 * k1) mod 11).
一部の組み合わせでは、管理番号k1またはにk2なることができ10ます。その場合、番号は無効になります。
k1またはの合計係数11 k2が11の場合、つまりk1 = 11 - (11 mod 11)、制御桁は11ではなく0になります。
チャレンジ
文字MまたはF(男性または女性)と11桁の数字を入力として受け取り、上記の規則に従って出生番号が有効かどうかを確認します。
- 入力フォーマットと順序はオプションです
- 11の数値は、単一の数値または連続した文字列である必要があります(入力をとすることはできません
DD, MM, YY, iii, kk)。 - 日付は有効であると想定できます(310699xxxxxは入力として与えられません)
- 出力は真/偽の値です(1/0、真/偽など)
- プログラムまたは機能
- すべての標準ルールが適用されます
このページ(ノルウェー語)で日付を選択すると、すべての有効な番号を見つけることができます。
例:
M, 01010099931
True
F, 01029042620
True
M, 0101009841
False
F, 01010051866
True
F, 08021690849
True
M, 01029040105
True
M, 01029037473
False
バイト単位の最短コードが優先されます。
@ Chiru、MまたはFのみが入力として与えられると仮定します。無効な入力に対する未定義の動作は問題ありません。
—
Stewie Griffin
["Q", "01010099931"]返却された場合、ルールに違反しますtrueか?)