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"kk
sono 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 k1
o k2
possono diventare 10
. In tal caso, il numero non sarà valido.
Se il modulo di somma 11 per k1
o k2
è 11, ovvero k1 = 11 - (11 mod 11)
, la cifra di controllo sarà 0, non 11.
Sfida
Prendi una lettera M
o 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
?)