Nomor Lahir Norwegia terdiri dari 11 digit, terdiri atas cara berikut:
DDMMYYiiikk
DDadalah hari (dari 01-31)MMadalah bulan (dari 01-12)YYadalah tahun (dari 00-99). Itu tidak dibedakan antara 1900 dan 2000iiiadalah "nomor individual"kkdua 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 k1atau k2dapat menjadi 10. Jika itu masalahnya, nomor tersebut tidak valid.
Jika jumlah modulus 11 untuk k1atau k2adalah 11, yaitu k1 = 11 - (11 mod 11), maka digit kontrol akan menjadi 0, bukan 11.
Tantangan
Ambil satu huruf, Matau 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?)