Norweski numer urodzenia składa się z 11 cyfr, ułożonych w następujący sposób:
DDMMYYiiikk
DD
jest dzień (od 01-31)MM
jest miesiącem (od 01-12)YY
oznacza rok (od 00 do 99). Nie ma rozróżnienia między 1900 a 2000iii
to „indywidualny numer”kk
to 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 k1
lub k2
mogą się stać10
. W takim przypadku numer będzie nieprawidłowy.
Jeżeli moduł sumy 11 dla k1
lub k2
wynosi 11, to znaczy k1 = 11 - (11 mod 11)
cyfra kontrolna będzie wynosić 0, a nie 11.
Wyzwanie
Weź list, M
lub 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.
źródło
["Q", "01010099931"]
powrót jest niezgodny z zasadamitrue
?)Odpowiedzi:
Python 3,
227221 bajtówFunkcja, która przyjmuje dwa argumenty: płeć „m” i numer urodzenia „n”, oba jako łańcuchy. Może być trochę golfa do zrobienia, szczególnie w ostatniej linii. Będę nad tym pracował.
źródło
JavaScript (ES2016),
275259255254252 bajtówGra w golfa :
Testy :
Nie golfowany :
źródło
JS, 343 bajtów
źródło