Bueno la imagen lo dice todo, después de ver esto se m ocurrió codificar algo para automatizar la validación (o porque no, generar nuestros propios números validos ;) pero encontré q ya esta bastante trillado el tema, así q me voy a limitar a mostrar un código hecho en JavaScript vs. un código realizado en Python (se q no es una comparacion justa :o) pero veamos código!!
function checkValidity(number)
{
var reversedNum = number.reverse();
var notDouTotal = 0;
var doubNumbers=new Array();
var arrayIndex = 0;
var sum = 0;
var stringTest = "";
for (i=0;i<number.length;i++)
{
var charInNum = reversedNum.charAt(i);
var intValue = parseInt(charInNum);
if(i%2 == 0)
notDouTotal = notDouTotal + intValue;
else {
doubNumbers[arrayIndex] = intValue;
arrayIndex++;
}
}
for (x=0;x<doubNumbers.length;x++)
{
var doubNumb = doubNumbers[x];
if(doubNumb*2>=10)
{
theString = doubNumb*2 + "";
sum = parseInt(theString.charAt(0)) + parseInt(theString.charAt(1));
notDouTotal = notDouTotal + sum;
sum = 0;
//stringTest = stringTest + " + " + theString.charAt(0) + " + " + theString.charAt(1);
}
else
{
notDouTotal = notDouTotal + doubNumb*2;
//stringTest = stringTest + " + " + doubNumb*2;
}
}
if(notDouTotal%10 == 0)
return "Yes, it is a valid number (" + notDouTotal + ")";
else
return "No, it is NOT a valid number (" + notDouTotal + ")";
}
ahora veamos como reemplazar esto con una linea d código en python y obtener exactamente el mismo resultado (ambos codigos validan un numero)
>>> s = '4417123456789113'
>>> sum([t%10 + t/10 for t in [int(c)*2 for c in s[::2]]]) + sum([int(c) for c in s[1::2]])
>>> sum([t%10 + t/10 for t in [int(c)*2 for c in s[::2]]]) + sum([int(c) for c in s[1::2]])
Recordemos, un número de targeta de credito es válido si el resultado de esta operación es múltiplo de 10, sencillo y bonito verdad? XD
Para mas información ...
http://www.mint.com/blog/trends/credit-card-code-01202011/
http://gizmodo.com/5740621/what-do-all-the-numbers-on-your-credit-card-mean
http://ctthosting.com/cc/credit.js
No hay comentarios:
Publicar un comentario