*Credit card issuer checking
Given a credit card number we can determine who the issuer/vendor is with a few basic knowns.
Complete the function getIssuer() that will use the values shown below to determine the card issuer for a given card number. If the number cannot be matched then the function should return the string Unknown.*
| Card Type | Begins With | Number Length |
|------------|----------------------|---------------|
| AMEX | 34 or 37 | 15 |
| Discover | 6011 | 16 |
| Mastercard | 51, 52, 53, 54 or 55 | 16 |
| VISA | 4 | 13 or 16 |
getIssuer(4111111111111111) == "VISA"
getIssuer(4111111111111) == "VISA"
getIssuer(4012888888881881) == "VISA"
getIssuer(378282246310005) == "AMEX"
getIssuer(6011111111111117) == "Discover"
getIssuer(5105105105105100) == "Mastercard"
getIssuer(5105105105105106) == "Mastercard"
getIssuer(9111111111111111) == "Unknown"
해결과정
function getIssuer(number => {
let result = number.toString() // 1
})
function getIssuer(number => {
let result = number.toString() // 1
let length = result.length
let separate = result.split('')
switch(length) {
case 13:
if(separate[0]==='4'){
return 'VISA';
} else{
return 'Unknown';
}
case 15: .........
case 16: .........
default: .........
}
})
하지만 이렇게 쓰면.. 코드가 너무 ......길다!!!!!!!!!!
정규식을 써볼까? 앞자리만 일치시킬 때, 결과값을 받아보자
function getIssuer(number => {
if(/^4\\d/.test(number)) return 'VISA'
if (/^3[4|7]\\d/.test(number)) return 'AMEX'
if (/^6011\\d/.test(number)) return 'Discover'
if (/^5[1-5]\\d/.test(number)) return 'Mastercard'
else return 'Unknown'
})
function getIssuer(number => {
if(/^4\\d/.test(number) && ((''+number).length === 16 || (''+number).length === 13)) return 'VISA'
if (/^3[4|7]\\d/.test(number) && (''+number).length === 15) return 'AMEX'
if (/^6011\\d/.test(number) && (''+number).length === 16) return 'Discover'
if (/^5[1-5]\\d/.test(number) && (''+number).length === 16) return 'Mastercard'
else return 'Unknown'
})
function getIssuer(n) {
var s = n.toString();
if (/^3[4|7]\\d{13}$/.test(s)) return "AMEX";
if (/^6011\\d{12}$/.test(s)) return "Discover";
if (/^5[1-5]\\d{14}$/.test(s)) return "Mastercard";
if (/^4(\\d{12}|\\d{15})$/.test(s)) return "VISA";
return "Unknown";
}
별거 아니지만 정규식을 조금 더 알게 된(?) 알고리즘 문제가 된듯합니다.
*reference MDN - Regular Expressions https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/정규식*
pearf
개발 중
접속 서버를 struct
타입으로 변경
type testServer struct {
host string
port string
method string
key string
}
루트에너지같은 패스워드 접속 서버 통과
c.Auth = []ssh.AuthMethod{
ssh.Password(key),
}
루트 권한 획득이 session.Run(cmd)
만으로 안됨
인터렉션 없이 자동화 방법 구상중