Nomor Lahir Norwegia terdiri dari 11 digit, terdiri atas cara berikut:
DDMMYYiiikk
DD
adalah hari (dari 01-31)MM
adalah bulan (dari 01-12)YY
adalah tahun (dari 00-99). Itu tidak dibedakan antara 1900 dan 2000iii
adalah "nomor individual"kk
dua digit kontrol
iii
ditentukan oleh tahun lahir dan jenis kelamin dengan cara berikut
- 0000-1900: Mengabaikan, ada beberapa kasus yang tidak konsisten dan khusus
- 1900-1999: Kisaran = 000-499
- 2000-2039: Kisaran = 500-999
- Perempuan: Angka genap (dan 000)
- Laki-laki: Angka ganjil
Angka kontrol ditentukan dengan cara berikut:
Mari kita sebut 11 digit:
d1 d2 m1 m2 y1 y2 i1 i2 i3 k1 k2
Kemudian digit kontrol dapat dihitung menggunakan persamaan:
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).
Untuk beberapa kombinasi, angka kontrol k1
atau k2
dapat menjadi 10
. Jika itu masalahnya, nomor tersebut tidak valid.
Jika jumlah modulus 11 untuk k1
atau k2
adalah 11, yaitu k1 = 11 - (11 mod 11)
, maka digit kontrol akan menjadi 0, bukan 11.
Tantangan
Ambil satu huruf, M
atau F
(pria atau wanita), dan sebelas digit angka sebagai masukan, dan periksa apakah Nomor Lahir itu sah menurut aturan di atas.
- Format dan pesanan input adalah opsional
- 11 angka harus berupa angka tunggal atau string berurutan (Anda tidak dapat menerima input sebagai
DD, MM, YY, iii, kk
). - Anda dapat menganggap tanggal tersebut valid (310699xxxxx tidak akan diberikan sebagai masukan)
- Output adalah nilai true / falsy (1/0, true / false dll.)
- Program atau fungsi
- Semua aturan standar berlaku
Anda dapat menemukan semua nomor yang valid di halaman ini (dalam bahasa Norwegia) dengan memilih tanggal.
Contoh:
M, 01010099931
True
F, 01029042620
True
M, 0101009841
False
F, 01010051866
True
F, 08021690849
True
M, 01029040105
True
M, 01029037473
False
Kode terpendek dalam byte menang.
["Q", "01010099931"]
kembalitrue
?)