1 00:00:00,000 --> 00:00:13,290 2 00:00:13,290 --> 00:00:14,570 >> Rob BOWDEN: Hi, Ako Rob. 3 00:00:14,570 --> 00:00:17,610 At Umaasa ako na sinisingil sa iyo up para sa kredito. 4 00:00:17,610 --> 00:00:20,710 Kaya unang bagay na kailangan naming gawin ay humiling ng credit card 5 00:00:20,710 --> 00:00:22,710 numero mula sa user. 6 00:00:22,710 --> 00:00:25,060 Dito, ginagamit namin getLongLong. 7 00:00:25,060 --> 00:00:29,070 Maaari mo na ginagamit din getString, ngunit sa kasong iyon, kailangan mo upang suriin 8 00:00:29,070 --> 00:00:32,340 na walang mga hindi-pang-numero character sa string. 9 00:00:32,340 --> 00:00:34,560 Kaya gagamitin namin getLongLong. 10 00:00:34,560 --> 00:00:38,070 >> Tandaan na hindi mo maaaring gamitin ang isang bagay tulad ng getInt, dahil ang bilang ay magiging 11 00:00:38,070 --> 00:00:40,650 masyadong malaki upang magkasya sa isang integer. 12 00:00:40,650 --> 00:00:44,480 Sa sandaling mayroon namin ang dami na, kami makikita dito ito habang loop. 13 00:00:44,480 --> 00:00:48,210 Kaya ito habang loop ay pagpapatupad Algorithm Luhn na sa iyo 14 00:00:48,210 --> 00:00:50,980 makita sa pset spec. 15 00:00:50,980 --> 00:00:53,830 >> At talagang ito ay pagpunta upang maging isang bit matalino. 16 00:00:53,830 --> 00:01:00,800 Kaya sa mga pset spec, napansin na ang Mga hakbang One at Dalawang ay hiwalay. 17 00:01:00,800 --> 00:01:05,160 Muna namin pumunta sa ibabaw ng buong credit card numero, naghahanap para sa bawat iba pang mga 18 00:01:05,160 --> 00:01:09,775 karakter na nagsisimula mula sa pangalawang sa huling character, at multiply ang mga ito 19 00:01:09,775 --> 00:01:11,750 at pagdaragdag ng lahat ng mga digit. 20 00:01:11,750 --> 00:01:16,150 Pagkatapos matapos na, idagdag kami sa lahat ng iba pang mga numero. 21 00:01:16,150 --> 00:01:20,660 >> Kaya sa halip ng paggawa sa mga nasa dalawang hiwalay na mga hakbang, kami ay pagpunta sa pagsamahin 22 00:01:20,660 --> 00:01:24,430 ang mga ito sa isa iteration sa ibabaw ng buong numero ng credit card. 23 00:01:24,430 --> 00:01:29,710 Dito, makikita natin int kuprum digit Kapantay numero ng credit card, mod 10. 24 00:01:29,710 --> 00:01:32,050 Ano ang numero ng credit card mod 10 ginagawa? 25 00:01:32,050 --> 00:01:35,750 Ito ay nagbibigay sa amin ng huling digit sa buong numero. 26 00:01:35,750 --> 00:01:39,340 Kaya tandaan na kung hinati namin ang Numero ng hanggang sa 10, pagkatapos ay ang natitira 27 00:01:39,340 --> 00:01:42,180 ay magiging kahit ano na ang huling digit ay. 28 00:01:42,180 --> 00:01:46,560 23 na hinati sa 10, ang natitira ay magiging 3. 29 00:01:46,560 --> 00:01:53,760 >> Kaya ang huling digit, ngayon dito, makikita natin kami ay sumasanga sa mult sa pamamagitan ng 2. 30 00:01:53,760 --> 00:01:57,630 Kaya kung ano kami ay pagpunta sa gumagamit mult sa pamamagitan ng 2 para ay differentiating sa pagitan ng 31 00:01:57,630 --> 00:02:02,110 isa sa mga "bawat iba pang mga numero mula sa ang ikalawang digit na "numero. 32 00:02:02,110 --> 00:02:08,310 Mult sa pamamagitan ng 2 ay pagpunta upang simulan out bilang hindi totoo, simula ng huling digit na dapat hindi 33 00:02:08,310 --> 00:02:11,750 ituring na mula sa pangalawa sa huling digit. 34 00:02:11,750 --> 00:02:16,760 >> Kaya pagkatapos ay sa dulo ng ito para sa loop, namin makita na kami ay pagpunta upang baguhin ito 35 00:02:16,760 --> 00:02:18,870 mula sa hindi totoo sa true. 36 00:02:18,870 --> 00:02:22,520 Sa susunod na pag-ulit ng para sa loop, ito ay pagpunta sa itinuturing na tunay hanggang 37 00:02:22,520 --> 00:02:25,090 sa dulo, kapag baguhin namin ito mula totoo sa hindi. 38 00:02:25,090 --> 00:02:28,290 Dahil pagkatapos kami ay magiging sa ikatlong sa huling digit, na kung saan ay hindi isa sa mga 39 00:02:28,290 --> 00:02:32,210 digit na dapat naming i-multiply sa pamamagitan ng 2. 40 00:02:32,210 --> 00:02:37,410 >> Kaya kung mangyari ba naming maging sa isa sa mga digit na gusto naming i-multiply sa pamamagitan ng 2, 41 00:02:37,410 --> 00:02:40,610 nakikita namin kami ay pagdaragdag sa aming checksum. 42 00:02:40,610 --> 00:02:43,640 At dito, ginagamit namin ang tatluhan operator sa isang beses 43 00:02:43,640 --> 00:02:45,470 muli maging isang bit matalino. 44 00:02:45,470 --> 00:02:50,170 Kaya kung kuprum digit Mas mababa sa 5, pagkatapos maaari naming lamang gawin kuprum beses digit 2. 45 00:02:50,170 --> 00:02:50,690 Iyon ay simple. 46 00:02:50,690 --> 00:02:52,770 Kung ito ay 1, pagkatapos ay gusto naming idagdag 2. 47 00:02:52,770 --> 00:02:54,090 Kung ito ay 2, gusto naming idagdag 4. 48 00:02:54,090 --> 00:02:55,530 Kung ito ay 4, gusto naming idagdag 8. 49 00:02:55,530 --> 00:02:57,400 >> Kaya kung ano ang mga espesyal na tungkol sa 5? 50 00:02:57,400 --> 00:03:00,290 Well, 5 beses 2 ay 10. 51 00:03:00,290 --> 00:03:05,920 At tandaan mula sa pset spec na gusto naming idagdag ang mga digit ng 52 00:03:05,920 --> 00:03:09,300 numero beses 2, at hindi ang beses na numero 2 mismo. 53 00:03:09,300 --> 00:03:13,920 Kaya kung ang orihinal na numero ay 7, 7 beses 2 ay 14. 54 00:03:13,920 --> 00:03:18,930 Gusto naming magdagdag ng 1 plus 4 sa dami, hindi 14. 55 00:03:18,930 --> 00:03:24,050 >> Kaya dito, kung ang bilang na ito ay 5 o mas mataas, kung ano ang aming ginagawa ay kuprum digit 56 00:03:24,050 --> 00:03:26,470 2 beses minus 9. 57 00:03:26,470 --> 00:03:29,940 At kung sa tingin mo tungkol sa na, 5 beses 2 ay 10. 58 00:03:29,940 --> 00:03:33,130 At kaya kami nagdadagdag ka ng 1, na kung saan ay 10 minus 9. 59 00:03:33,130 --> 00:03:35,490 At 6 beses 2 ay 12. 60 00:03:35,490 --> 00:03:38,380 Kaya namin idinadagdag 3, na 12 minus 9. 61 00:03:38,380 --> 00:03:40,250 At na gumagana para sa lahat ng mga numero. 62 00:03:40,250 --> 00:03:43,330 >> Kaya ang ginagawa namin idinadagdag sa aming checksum. 63 00:03:43,330 --> 00:03:49,970 At ito pa ay kung ano ang paghawak ng Hakbang Dalawang ng algorithm Luhn, na lamang 64 00:03:49,970 --> 00:03:55,010 ang pagdagdag ng mga digit na kung hindi ito mangyari upang maging isa sa mga bawat iba pang mga numero. 65 00:03:55,010 --> 00:04:01,440 Kaya sa sandaling mayroon kaming na, ito ay pinapanatiling track ng unang dalawang mga character ng 66 00:04:01,440 --> 00:04:05,220 ang numero ng credit card, ang unang dalawang mga digit, dahil sa huli kami ay pagpunta 67 00:04:05,220 --> 00:04:08,980 sa nais na gumamit na pababa dito upang i-verify, lahat ng karapatan, isang Visa ay may upang simulan ang 68 00:04:08,980 --> 00:04:14,440 may ito, at isang pangangailangan American Express na magsimula sa mga ito, at iba pa. 69 00:04:14,440 --> 00:04:16,850 >> Panghuli, mayroon kaming credit card numero ay katumbas ng credit card 70 00:04:16,850 --> 00:04:18,730 numero na hinati sa pamamagitan ng 10. 71 00:04:18,730 --> 00:04:19,829 Bakit ang gagawin namin na? 72 00:04:19,829 --> 00:04:22,070 Well, pinanghahawakan lang namin ang huling digit. 73 00:04:22,070 --> 00:04:24,880 Paghahati sa pamamagitan ng 10 ay shift ang buong numero sa ibabaw. 74 00:04:24,880 --> 00:04:27,150 Kaya ngayon kapag loop namin pabalik, hindi namin pagpunta sa ma-paghawak ng mga 75 00:04:27,150 --> 00:04:28,540 pangalawa sa huling digit. 76 00:04:28,540 --> 00:04:31,060 Pagkatapos kapag pindutin namin ito muli, kami ay pagpunta upang i-cut-off ang ikalawang kailangang magtagal 77 00:04:31,060 --> 00:04:35,060 digit na, loop pabalik, at pangasiwaan ang mga third kailangang magtagal digit, at iba pa, hanggang sa ang 78 00:04:35,060 --> 00:04:40,120 numero naabot ng 0, kung saan punto masira namin out sa habang loop. 79 00:04:40,120 --> 00:04:43,560 >> Pinananatili namin ang din ang track ng kredito haba numero ng card, dahil iyon ang 80 00:04:43,560 --> 00:04:48,440 mahalaga upang makilala kung ito ay ang isang numero ng wastong credit card. 81 00:04:48,440 --> 00:04:53,560 Kaya ngayon, sa sandaling kinakalkula namin ang checksum, maaari naming matukoy kung ito 82 00:04:53,560 --> 00:04:55,180 ay isang wastong card. 83 00:04:55,180 --> 00:04:58,010 Ang checksum mod 10 ay bahagi ng algorithm Luhn ni. 84 00:04:58,010 --> 00:05:03,360 Kung checksum mod 10 babalik ang isang bagay non-zero, pagkatapos ito ay nagbabalik ng tunay, 85 00:05:03,360 --> 00:05:06,650 sa kasong ito, ang bilang Dapat na wasto. 86 00:05:06,650 --> 00:05:12,590 >> Kung hindi man, kung checksum mod 10 ay 0, pagkatapos ay maaari naming magpatuloy. 87 00:05:12,590 --> 00:05:18,360 Ito malaki pa kung maganda ang sinasabi, kung ang unang dalawang digit ay pantay-pantay sa AMEX 1, 88 00:05:18,360 --> 00:05:23,640 kung saan up dito, makikita natin na AMEX 1, bilang bawat ang spec, ay 34. 89 00:05:23,640 --> 00:05:26,595 At gagamitin din namin ihambing ito sa AMEX 2, na kung saan ay 37. 90 00:05:26,595 --> 00:05:30,360 91 00:05:30,360 --> 00:05:34,210 At ang haba numero ng credit card ay katumbas sa inaasahang American Express 92 00:05:34,210 --> 00:05:37,910 haba card, pagkatapos ng aming makakaya i-print ang American Express. 93 00:05:37,910 --> 00:05:41,920 >> Gagawin namin ang isang katulad na bagay gamit ang Visa. 94 00:05:41,920 --> 00:05:51,940 Kailangan Ang unang dalawang digit na maging mas malaki mababa sa o patas sa 40, o mas mababa 95 00:05:51,940 --> 00:05:54,290 mababa sa o patas sa 49. 96 00:05:54,290 --> 00:05:57,180 Yaong kumakatawan wastong Visa card. 97 00:05:57,180 --> 00:06:01,530 At ang haba ay kailangang maging katumbas ng Visa Haba ng 1 o Visa Haba ng 2. 98 00:06:01,530 --> 00:06:07,320 At kaya dapat na alinman ang haba 13 o 16 digit ang haba. 99 00:06:07,320 --> 00:06:12,240 >> At sa wakas ay may MasterCard, ito ay katulad ng Visa, na ang unang dalawang 100 00:06:12,240 --> 00:06:15,340 kailangan digit na maging sa isang tiyak na hanay, at ang haba kinakailangan 101 00:06:15,340 --> 00:06:19,440 na eksaktong 16 digit. 102 00:06:19,440 --> 00:06:24,390 Kaya kung ang alinman sa mga kasong iyon pindutin nang matagal, pagkatapos ay sa sa unang kaso, bibigyan namin ng print AMEX. 103 00:06:24,390 --> 00:06:26,310 Kung hold kasong ito, aming i-print ang Visa. 104 00:06:26,310 --> 00:06:28,400 Kung hold kasong ito, kami ay i-print ang MasterCard. 105 00:06:28,400 --> 00:06:32,170 >> Ngunit kung wala sa mga pindutin nang matagal, kahit na kung ang checksum ay wasto, 106 00:06:32,170 --> 00:06:33,900 i-print pa rin namin hindi wasto. 107 00:06:33,900 --> 00:06:37,050 Dahil ito ay hindi isa sa mga uri ng mga baraha. 108 00:06:37,050 --> 00:06:40,030 Ang pangalan ko ay Rob, at Umaasa ako sa iyo nahanap credit kawili-wiling. 109 00:06:40,030 --> 00:06:46,272