Số sinh Na Uy bao gồm 11 chữ số, bao gồm các cách sau:
DDMMYYiiikk
DDlà ngày (từ 01-31)MMlà tháng (từ 01-12)YYlà năm (từ 00-99). Nó không được phân biệt giữa 1900 và 2000iiilà "số cá nhân"kklà hai chữ số kiểm soát
iii được xác định bởi năm sinh và giới tính theo cách sau
- 0000-1900: Bỏ qua, có một số trường hợp không nhất quán và đặc biệt
- 1900-1999: Phạm vi = 000-499
- 2000-2039: Phạm vi = 500-999
- Nữ: Số chẵn (và 000)
- Nam: số lẻ
Các số kiểm soát được xác định theo cách sau:
Hãy gọi 11 chữ số:
d1 d2 m1 m2 y1 y2 i1 i2 i3 k1 k2
Sau đó, các chữ số điều khiển có thể được tính bằng các phương trình:
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).
Đối với một số kết hợp, các số điều khiển k1hoặc k2có thể trở thành 10. Nếu đó là trường hợp, số sẽ không hợp lệ.
Nếu mô đun tổng 11 cho k1hoặc k2là 11, tức là k1 = 11 - (11 mod 11), chữ số điều khiển sẽ là 0, không phải 11.
Thử thách
Lấy một chữ cái, Mhoặc F(nam hoặc nữ), và một số mười một chữ số làm đầu vào, và kiểm tra xem Số sinh có hợp lệ theo các quy tắc trên không.
- Định dạng đầu vào và thứ tự là tùy chọn
- 11 số phải là một số đơn hoặc một chuỗi liên tiếp (bạn không thể lấy đầu vào là
DD, MM, YY, iii, kk). - Bạn có thể cho rằng ngày hợp lệ (310699xxxxx sẽ không được cung cấp làm đầu vào)
- Đầu ra là một giá trị trung thực / sai lệch (1/0, đúng / sai, v.v.)
- Chương trình hoặc chức năng
- Tất cả các quy tắc tiêu chuẩn được áp dụng
Bạn có thể tìm thấy tất cả các số hợp lệ trên trang này (bằng tiếng Na Uy) bằng cách chọn một ngày.
Ví dụ:
M, 01010099931
True
F, 01029042620
True
M, 0101009841
False
F, 01010051866
True
F, 08021690849
True
M, 01029040105
True
M, 01029037473
False
Mã ngắn nhất trong byte thắng.
["Q", "01010099931"]trở vềtruekhông?)