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 regresa true 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 regresa true si está conformado por 11 dígitos y su último dígito es su dígito verificador válido.

Fuentes:

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 y pmap de Clojure.
  • No es posible hacer uso de ifs.