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.
sumber
["Q", "01010099931"]
kembalitrue
?)Jawaban:
Python 3,
227221 byteFungsi yang mengambil dua argumen, jenis kelamin 'm', dan angka kelahiran 'n', keduanya sebagai string. Mungkin ada beberapa golf yang harus dilakukan, terutama di baris terakhir. Saya akan terus mengerjakannya.
sumber
JavaScript (ES2016),
275259255254252 BytesGolf :
Tes :
Tidak Disatukan :
sumber
JS, 343 Bytes
sumber