Dígito verificador del IMSS
El número de seguro social se compone de 11 dígitos siendo el último el dígito verificador. En algunos casos solo nos encontraremos con los primeros 10 dígitos.
Defina las funciones dígito-verificador
, dígito-verificador-válido?
y número-de-seguro-social-válido?
tal que:
- Para
dígito-verificador
: dado un número entero regresa el dígito verificador. - Para
dígito-verificador-válido?
: dado dos números enteros regresatrue
solo si el segundo número es el dígito verificador del primero. - Para
número-de-seguro-social-válido?
: dado un número de seguro social regresatrue
si está conformado por 11 dígitos y su último dígito es su dígito verificador válido.
Fuentes:
- https://imss-ayuda.blogspot.com/2011/09/calcular-el-digito-verificador-del-imss.html
- http://www.cuidatupatrimonio.com/blog/conformacion-del-nss-y-calculo-del-digito-verificador/
Ejemplos
Ejemplo 01
- Número del seguro social:
3090682493
- Dígito verificador:
0
Ejemplo 02
- Número del seguro social:
1780581644
- Dígito verificador:
8
Ejemplo 03
- Número del seguro social:
6789735180
- Dígito verificador:
4
Ejemplo 04
- Número del seguro social:
1234567890
- Dígito verificador:
3
Pruebas
;; Si el argumento dado no es un número entero regresará -1
=> (dígito-verificador 1234567890)
3
;; Si alguno de los argumentos no es un número entero regresará false
=> (dígito-verificador-válido? 1234567890 3)
true
;; Si el argumento dado no es un número entero regresará false
=> (número-de-seguro-social-válido? 12345678903)
true
Restricciones
- No es posible hacer uso de la recursividad ni de las funciones
filter
,map
,mapv
ypmap
de Clojure. - No es posible hacer uso de
if
s.