>> ROB 보덴은 : 안녕, 난 롭 해요.
그리고 난 당신이 비용이 청구 희망 신용 최대.
우리가해야 할 그래서 일단 신용 카드를 요구한다
사용자의 번호입니다.
여기, 우리는 getLongLong을 사용하고 있습니다.
또한, getString에 사용, 수도 있지만, 이 경우에는 확인해야 할 것
어떤 숫자가 아닌이 있었다 없다 문자열의 문자.
그래서 우리는 getLongLong를 사용합니다.
>> 당신이 뭔가를 사용할 수 없다는 것을 기억하십시오 getInt와 같은 수 있기 때문에 될 것입니다
정수에 맞게 너무 커서.
우리는 그 숫자가 있으면, 우리 이 while 루프는 여기를 참조하십시오.
따라서이 while 루프가 실행된다 LUHN 알고리즘 당신
PSET 사양을 참조하십시오.
>> 그리고 실제로거야 조금 영리합니다.
그래서 PSET 사양에 주목하는 1, 2는 분리 된 단계를 반복합니다.
우리는 먼저 전체의 신용 카드를 통해 이동 수, 다른 모든 찾고
문자로 두 번째부터 마지막 문자, 그 곱
모든 숫자를 추가.
그 후, 우리는에 추가 다른 모든 숫자.
>> 그래서 그 대신 두에 그 일을 별도의 단계, 우리는 결합거야
그 이상이 한 번에 전체 신용 카드 번호.
여기, 우리는 INT 현재 자리 등호를 참조하십시오 신용 카드 번호, 모드 10.
신용 카드 번호는 무엇입니까 모드 10 일?
그것은 우리에게 마지막 자리를주고 전체 숫자.
그래서 기억 우리가 나눈 경우 (10)에 의해 최대 수, 그 다음 나머지
그 마지막 자리는 무엇이든 할 것이다.
23, 10으로 나눈 나머지는 3이됩니다.
>> 그래서 마지막 자리는, 지금 여기, 우리가 참조 우리는 (2)에 의해 배수에 분기입니다.
그래서 우리는 배수를 사용하는 것입니다 2에 의해는 구별된다
"다른 모든 숫자 중 하나에서 두 번째 숫자 "숫자.
(2)에 의한 배수는 밖으로 시작하는 것입니다 거짓, 마지막 숫자 이후 안된다
에서 고려되어야 마지막 자리에 두 번째.
>> 그럼 루프에 대한이의 끝에서, 우리 우리는이를 변경하는 거라고 볼
false에서 true.
For 루프의 다음 반복에, 그 때까지 사실로 간주 것
우리는 변화의 끝, 사실에서 false로.
우리는 세 번째에있을거야 때문에 중 하나가 아닌 마지막 자리,
우리가 2를 곱해야 자리.
>> 우리는 그 중 하나가 될 일이 경우 우리가 2를 곱하려는 숫자,
우리는 우리가 우리의 검사에 추가하고 참조하십시오.
그리고 여기, 우리에게 사용하는 삼항 연산자에 한 번
다시 조금 영리.
그래서 현재 자리는, 5 미만이면 우리는 단지 현재 자리 2 배를 할 수 있습니다.
그건 간단합니다.
그것은 1의 경우에, 우리는 2를 추가 할.
이 두 경우에, 우리는 4를 추가 할.
이 4의 경우, 우리는 8을 추가 할.
>> 그래서 5에 대한 특별 해?
음, 5 배 2는 10입니다.
그리고 PSET 사양에서 기억이 우리의 자리를 추가 할
수 시간이 아닌 수의 2 배 자체.
그렇다면 원래의 수 7, 7 번 2는 14입니다.
우리는 1 + 4를 추가 할 수에,하지 14.
>> 그래서 여기 수가 5 이상이면, 우리가하는 일은 현재 자리입니다
2 배 마이너스 9.
그리고 당신이 그것에 대해 생각하면, 5 배 2는 10입니다.
그래서 우리는, 1을 추가하는 10 빼기 9입니다.
6 곱하기 2는 12입니다.
그래서 우리는 3을 추가하고있는 12 빼기 9입니다.
그리고 그 모든 숫자에 대해 작동합니다.
>> 그래서 우리가 추가하는 무엇 우리의 체크섬.
그리고이 다른 단계를 처리하는 무슨이다 단지입니다 LUHN의 알고리즘, 두
이 발생하지 않는 경우에 숫자를 추가 다른 모든 숫자 중 하나.
그래서 일단 우리는이 유지되고 있음이 처음 두 문자의 추적
신용 카드 번호, 처음 두 우리는 결국려고하고 있기 때문에 숫자,
확인 여기 저기에 사용하려는 것은, 모든 권리, 비자를 시작할 수있다
이와 함께, 그리고 아메리칸 익스프레스 요구 이 시작, 등등.합니다
>> 마지막으로, 우리는 신용 카드를 수행 수는 신용 카드와 동일
수는 10로 나눈.
왜 우리가해야합니까?
음, 우리는 단지 마지막 숫자를 처리합니다.
10 나누면 이동합니다 전체 수에.
다시 때 우리가 루프 그래서 지금, 우린 처리 될 것
마지막 자리에 두 번째.
우리가 다시 충돌 할 때 다음, 우리는거야 마지막으로 두 번째를 잘라
숫자, 루프 백, 취급 제 때까지, 그래서 숫자를 지속하고에
수는 어느 시점에서 0이 우리는 while 루프의 탈옥.
>> 우리는 또한 신용을 추적하고 카드 번호의 길이, 즉이기 때문에
그것의 여부를 구별하는 것이 중요합니다 유효한 신용 카드 번호.
그래서 지금 한 번 우리가 계산 한 검사, 우리는 확인할 수 있습니다 그것은 여부
유효한 카드입니다.
체크섬 모드 (10)는 부분입니다 LUHN의 알고리즘.
검사 모드 (10) 반환 일 경우 아닌, 다음이, true를 돌려줍니다
이 경우에있어서, 숫자 유효해야합니다.
>> 그렇지 않은 경우 체크섬 모드 10 0, 우리는 계속할 수 있습니다.
이것은, 다른 큰 말하는 경우 제 경우 두 자리는, AMEX 1과 동일하다
여기서 여기까지, 우리는 볼이 AMEX 1은 사양에 따라 34입니다.
그리고 우리는 또한 비교합니다 37이다 AMEX 2,에.
및 크레디트 카드 번호의 길이는 예상 아메리칸 익스프레스와 동일
카드 길이, 우리는 할 수있다 아메리칸 익스프레스를 인쇄 할 수 있습니다.
>> 우리는 비자와 비슷한 일을 할 수 있습니다.
처음 두 자리는 더 할 필요가 40 같거나 이하
이상 또는 49에 해당.
사람들은 유효한 비자 카드를 나타냅니다.
길이는 동일 할 필요 비자 길이 1 비자 길이 2.
그리고 길이는 하나 여야합니다 13 또는 16 자리까지.
>> 그리고 마지막으로 마스터와 함께, 그것의 비자 유사한, 즉 처음 두
숫자는 특정 될 필요 범위 및 길이 마스트
정확히 16 자리 숫자입니다.
따라서 이러한 경우의는, 다음에 개최하는 경우 첫 번째 경우, 우리는 AMEX를 인쇄 할 수 있습니다.
이 경우 보유하고있는 경우에, 우리는 비자를 인쇄 할 수 있습니다.
이 경우 보유하고있는 경우에, 우리는거야 마스터 카드를 인쇄 할 수 있습니다.
>> 그러나 그 중 어느 것도 보유하지 않는 경우도 체크섬이 유효했다 경우
우리는 여전히 유효 인쇄 할 수 있습니다.
그 중 하나가 아니니까 카드 이러한 유형의.
내 이름은 롭, 나는 당신을 희망 발견 신용 흥미.