Professional Documents
Culture Documents
Introduccin.
En el siguiente documento se explicaran las distintas soluciones que se
realizaron en la creacin de las funciones para resolver el proyecto de la
materia programacin lgica y funcional. En el proyecto se tiene que
realizar un programa que valide tarjetas de crdito.
Como se explic en el documento que nos proporcion el profesor cada
paso del algoritmo es simplificado con el siguiente ejemplo. Se considera
el nmero 4012888888881881.
Hay que realizar lo siguiente:
Doblar el valor de cada segundo dgito iniciando por la derecha.
[1,16,8,2,8,16,8,16,8,16,8,16,2,2,0,8]
Sumar los dgitos tanto de los valores doblados como de los no doblados.
Considerar que los nmeros como:
90 mod 10.
El resultado es cero, por lo que el nmero 4012888888881881
es un nmero vlido de tarjeta de crdito.
Desarrollo.
Para las funciones el tipo de dato ya est dado. Para la primera funcin
que se llamara toDigits el tipo de dato ser Integer -> [Integer], esto
quiere decir que recibir un entero y como salida tendr una lista de
enteros. A continuacin se muestra la funcin terminada.
Por ltimo la funcin isValid que tiene tipo Integer -> Bool que recibe
un entero y devuelve un booleano esto quiere decir que puede ser un
True o un False. En esta funcin simplemente se reutilizan las dems
funciones que ya elaboramos, para esto usamos la concatenacin entre
funciones. Para comenzar el proceso de manera correcta se colocan de
derecha a izquierda las funciones, porque es por donde comienza dicho
proceso. Para saber si es vlida la tarjeta, a la suma de sus nmeros se
le tiene que aplicar mod 10 si el resultado es 0 quiere decir que es
vlida y entonces regresa el True que es el tipo bool.
Referencias.
http://zvon.org/other/haskell/Outputlist/findIndices_f.html
http://stackoverflow.com/questions/919937/convert-string-list-to-int-list
http://stackoverflow.com/questions/5679797/haskell-string-to-list
https://github.com/Capelare/ejercicios-haskell/blob/master/ejercicios.hs