Eine norwegische Geburtsnummer besteht aus 11 Ziffern, die wie folgt zusammengesetzt sind:
DDMMYYiiikk
DD
ist der Tag (von 01-31)MM
ist der Monat (von 01-12)YY
ist das Jahr (von 00-99). Es wird nicht zwischen 1900 und 2000 unterschiedeniii
ist die "individuelle Nummer"kk
sind zwei Kontrollziffern
iii
wird durch Geburtsjahr und Geschlecht folgendermaßen bestimmt
- 0000-1900: Ignorieren Sie, es gibt einige Inkonsistenzen und Sonderfälle
- 1900-1999: Bereich = 000-499
- 2000-2039: Bereich = 500-999
- Weiblich: Gerade Zahlen (und 000)
- Männlich: Ungerade Zahlen
Die Kontrollnummern werden folgendermaßen ermittelt:
Nennen wir die 11 Ziffern:
d1 d2 m1 m2 y1 y2 i1 i2 i3 k1 k2
Dann können die Kontrollziffern unter Verwendung der Gleichungen berechnet werden:
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).
Bei einigen Kombinationen können die Kontrollnummern k1
oder k2
werden 10
. In diesem Fall ist die Nummer ungültig.
Wenn der Summenmodul 11 für k1
oder k2
11 ist, dh k1 = 11 - (11 mod 11)
, ist die Kontrollziffer 0, nicht 11.
Herausforderung
Nehmen Sie einen Buchstaben M
oder F
(männlich oder weiblich) und eine elfstellige Nummer als Eingabe und prüfen Sie, ob die Geburtsnummer gemäß den obigen Regeln gültig ist.
- Eingabeformat und Reihenfolge sind optional
- Die 11 Zahlen müssen eine einzelne Zahl oder eine fortlaufende Zeichenfolge sein (Sie können die Eingabe nicht als annehmen
DD, MM, YY, iii, kk
). - Sie können davon ausgehen, dass das Datum gültig ist (310699xxxxx wird nicht als Eingabe angegeben).
- Die Ausgabe ist ein Wahrheits- / Falschwert (1/0, wahr / falsch usw.)
- Programm oder Funktion
- Es gelten alle Standardregeln
Sie finden alle gültigen Nummern auf dieser Seite (auf Norwegisch), indem Sie ein Datum auswählen.
Beispiele:
M, 01010099931
True
F, 01029042620
True
M, 0101009841
False
F, 01010051866
True
F, 08021690849
True
M, 01029040105
True
M, 01029037473
False
Der kürzeste Code in Bytes gewinnt.
["Q", "01010099931"]
zurückkommttrue
?)