Un número de nacimiento noruego consta de 11 dígitos, compuestos de la siguiente manera:
DDMMYYiiikk
DDes el día (del 01 al 31)MMes el mes (del 01-12)YYes el año (de 00-99). No se diferencia entre 1900 y 2000iiies el "número individual"kkson dos dígitos de control
iii se determina por año de nacimiento y género de la siguiente manera
- 0000-1900: Desprecio, hay algunas inconsistencias y casos especiales
- 1900-1999: Rango = 000-499
- 2000-2039: Rango = 500-999
- Hembra: números pares (y 000)
- Hombre: números impares
Los números de control se determinan de la siguiente manera:
Llamemos a los 11 dígitos:
d1 d2 m1 m2 y1 y2 i1 i2 i3 k1 k2
Luego, los dígitos de control se pueden calcular utilizando las ecuaciones:
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).
Para algunas combinaciones, los números de control k1o k2pueden convertirse 10. Si ese es el caso, el número será inválido.
Si el módulo de suma 11 para k1o k2es 11, es decir k1 = 11 - (11 mod 11), el dígito de control será 0, no 11.
Desafío
Tome una letra, Mo F(hombre o mujer), y un número de once dígitos como entrada, y verifique si el número de nacimiento es válido de acuerdo con las reglas anteriores.
- El formato de entrada y el orden son opcionales
- Los 11 números deben ser un solo número o una cadena consecutiva (no puede tomar la entrada como
DD, MM, YY, iii, kk). - Puede suponer que la fecha es válida (310699xxxxx no se dará como entrada)
- La salida es un valor verdadero / falso (1/0, verdadero / falso, etc.)
- Programa o función
- Se aplican todas las reglas estándar.
Puede encontrar todos los números válidos en esta página (en noruego) eligiendo una fecha.
Ejemplos:
M, 01010099931
True
F, 01029042620
True
M, 0101009841
False
F, 01010051866
True
F, 08021690849
True
M, 01029040105
True
M, 01029037473
False
El código más corto en bytes gana.
fuente

["Q", "01010099931"]regresatrue?)Respuestas:
Python 3,
227221 bytesFunción que toma dos argumentos, el género 'm' y el número de nacimiento 'n', ambos como cadenas. Puede haber más golf por hacer, especialmente en la última línea. Seguiré trabajando en eso.
fuente
Javascript (ES2016),
275259255254252 BytesGolfizado :
Pruebas :
Sin golf :
fuente
JS, 343 bytes
fuente