Un número de nacimiento noruego consta de 11 dígitos, compuestos de la siguiente manera:
DDMMYYiiikk
DD
es el día (del 01 al 31)MM
es el mes (del 01-12)YY
es el año (de 00-99). No se diferencia entre 1900 y 2000iii
es el "número individual"kk
son 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 k1
o k2
pueden convertirse 10
. Si ese es el caso, el número será inválido.
Si el módulo de suma 11 para k1
o k2
es 11, es decir k1 = 11 - (11 mod 11)
, el dígito de control será 0, no 11.
Desafío
Tome una letra, M
o 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