Norweski numer urodzenia składa się z 11 cyfr, ułożonych w następujący sposób:
DDMMYYiiikk
DDjest dzień (od 01-31)MMjest miesiącem (od 01-12)YYoznacza rok (od 00 do 99). Nie ma rozróżnienia między 1900 a 2000iiito „indywidualny numer”kkto dwie cyfry kontrolne
iii zależy od roku urodzenia i płci w następujący sposób
- 0000–1900: Lekceważenie, występują pewne niespójności i przypadki szczególne
- 1900–1999: Zakres = 000–499
- 2000-2039: Zakres = 500–999
- Kobieta: liczby parzyste (i 000)
- Mężczyzna: liczby nieparzyste
Numery kontrolne są określane w następujący sposób:
Nazwijmy 11 cyframi:
d1 d2 m1 m2 y1 y2 i1 i2 i3 k1 k2
Następnie cyfry kontrolne można obliczyć za pomocą równań:
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).
W przypadku niektórych kombinacji numery kontrolne k1lub k2mogą się stać10 . W takim przypadku numer będzie nieprawidłowy.
Jeżeli moduł sumy 11 dla k1lub k2wynosi 11, to znaczy k1 = 11 - (11 mod 11)cyfra kontrolna będzie wynosić 0, a nie 11.
Wyzwanie
Weź list, Mlub F(mężczyzna lub kobieta), oraz numer jedenaście cyfr jako wejścia, i sprawdzić, czy numer jest prawidłowy Narodziny według powyższych zasad.
- Format wejściowy i kolejność są opcjonalne
- 11 liczb musi być pojedynczą liczbą lub kolejnym ciągiem znaków (nie można traktować danych wejściowych jako
DD, MM, YY, iii, kk). - Możesz założyć, że data jest ważna (310699xxxxx nie zostanie podany jako dane wejściowe)
- Dane wyjściowe są wartością prawda / fałsz (1/0, prawda / fałsz itp.)
- Program lub funkcja
- Obowiązują wszystkie standardowe zasady
Na tej stronie można znaleźć wszystkie prawidłowe numery (w języku norweskim), wybierając datę.
Przykłady:
M, 01010099931
True
F, 01029042620
True
M, 0101009841
False
F, 01010051866
True
F, 08021690849
True
M, 01029040105
True
M, 01029037473
False
Najkrótszy kod w bajtach wygrywa.
["Q", "01010099931"]powrót jest niezgodny z zasadamitrue?)