Un numero di nascita norvegese è composto da 11 cifre, composte nel modo seguente:
DDMMYYiiikk
DDè il giorno (dal 01-31)MMè il mese (dal 01-12)YYè l'anno (dalle 00-99). Non è differenziato tra il 1900 e il 2000iiiè il "numero individuale"kksono due cifre di controllo
iii è determinato dalla nascita e dal genere nel modo seguente
- Funzionamento1900: Ignorare, ci sono alcune incoerenze e casi speciali
- 1900-1999: intervallo = 000-499
- 2000-2039: intervallo = 500-999
- Femmina: numeri pari (e 000)
- Maschio: numeri dispari
I numeri di controllo sono determinati nel modo seguente:
Chiamiamo le 11 cifre:
d1 d2 m1 m2 y1 y2 i1 i2 i3 k1 k2
Quindi le cifre di controllo possono essere calcolate usando le equazioni:
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).
Per alcune combinazioni, i numeri di controllo k1o k2possono diventare 10. In tal caso, il numero non sarà valido.
Se il modulo di somma 11 per k1o k2è 11, ovvero k1 = 11 - (11 mod 11), la cifra di controllo sarà 0, non 11.
Sfida
Prendi una lettera Mo F(maschio o femmina) e un numero di undici cifre come input e controlla se il numero di nascita è valido secondo le regole sopra.
- Il formato e l'ordine di input sono facoltativi
- Gli 11 numeri devono essere un singolo numero o una stringa consecutiva (non è possibile accettare l'input come
DD, MM, YY, iii, kk). - Puoi presumere che la data sia valida (310699xxxxx non verrà fornito come input)
- L'output è un valore di verità / falsa (1/0, vero / falso ecc.)
- Programma o funzione
- Si applicano tutte le regole standard
Puoi trovare tutti i numeri validi in questa pagina (in norvegese) scegliendo una data.
Esempi:
M, 01010099931
True
F, 01029042620
True
M, 0101009841
False
F, 01010051866
True
F, 08021690849
True
M, 01029040105
True
M, 01029037473
False
Il codice più corto in byte vince.
["Q", "01010099931"]ritornatrue?)