Un numéro de naissance norvégien se compose de 11 chiffres, composé comme suit:
DDMMYYiiikk
DDest le jour (du 01-31)MMest le mois (du 01-12)YYest l'année (de 00 à 99). Ce n'est pas différencié entre 1900 et 2000iiiest le "numéro individuel"kksont deux chiffres de contrôle
iii est déterminé par l'année de naissance et le sexe de la manière suivante
- 0000-1900: Ignorance, il y a des incohérences et des cas spéciaux
- 1900-1999: plage = 000-499
- 2000-2039: plage = 500-999
- Féminin: nombres pairs (et 000)
- Homme: nombres impairs
Les numéros de contrôle sont déterminés de la manière suivante:
Appelons les 11 chiffres:
d1 d2 m1 m2 y1 y2 i1 i2 i3 k1 k2
Ensuite, les chiffres de contrôle peuvent être calculés à l'aide des équations:
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).
Pour certaines combinaisons, les numéros de contrôle k1ou k2peuvent devenir 10. Si tel est le cas, le numéro sera invalide.
Si le module de somme 11 pour k1ou k2est 11, c'est-à-dire k1 = 11 - (11 mod 11), alors le chiffre de contrôle sera 0, pas 11.
Défi
Prenez une lettre, Mou F(homme ou femme), et un nombre à onze chiffres comme entrée, et vérifiez si le numéro de naissance est valide selon les règles ci-dessus.
- Le format d'entrée et la commande sont facultatifs
- Les 11 chiffres doivent être un seul numéro ou une chaîne consécutive (vous ne pouvez pas prendre l'entrée comme
DD, MM, YY, iii, kk). - Vous pouvez supposer que la date est valide (310699xxxxx ne sera pas donnée en entrée)
- La sortie est une valeur véridique / fausse (1/0, vrai / faux, etc.)
- Programme ou fonction
- Toutes les règles standard s'appliquent
Vous pouvez trouver tous les numéros valides sur cette page (en norvégien) en choisissant une date.
Exemples:
M, 01010099931
True
F, 01029042620
True
M, 0101009841
False
F, 01010051866
True
F, 08021690849
True
M, 01029040105
True
M, 01029037473
False
Le code le plus court en octets gagne.
["Q", "01010099931"]retourtrue?)