Szuflada - Karta kredytowa

Czy numer karty się zgadza?

function(cardno){
 wynik <- logical(length(cardno))
  for(p in 1:length(cardno)){
   CARDNO <- cardno[p]
   CARDNO <- gsub(" ","",CARDNO)
   CARDNO <- gsub("-","",CARDNO)
   wagi <- rep(c(2,1), length.out=16)
   if(nchar(CARDNO) > 16){
    wynik[p] <- FALSE
   }else{
    roznica = 16 - nchar(CARDNO)
    suma = ""
    for (i in nchar(CARDNO):1){
     suma <- paste(as.numeric(substr(CARDNO,i,i))*wagi[i+roznica],suma, sep="")
    }
    sk = 0
    for(i in 1:nchar(suma)){
     sk <- sk + as.numeric(substr(suma,i,i))
    }
    sk <- sk %% 10
    if (sk == 0){
     wynik[p] <- TRUE
    }else{wynik[p] <- FALSE}
   }
  }
 return(wynik)
}

Created by Pretty R at inside-R.org

admin niedziela, 11 grudzień 2011 - 12:50 am | | Blog-R