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.
quelle
["Q", "01010099931"]
zurückkommttrue
?)Antworten:
Python 3,
227221 BytesFunktion, die zwei Argumente verwendet, das Geschlecht 'm' und die Geburtsnummer 'n', beide als Zeichenfolgen. Möglicherweise muss noch mehr Golf gespielt werden, insbesondere in der letzten Zeile. Ich werde weiter daran arbeiten.
quelle
JavaScript (ES2016),
275259255254252 BytesGolf :
Tests :
Ungolfed :
quelle
JS, 343 Bytes
quelle