>> რობ Bowden: Hi, მე Rob.
და იმედი მაქვს, რომ თქვენ გადახდილი up for საკრედიტო.
ასე რომ, პირველი, რაც ჩვენ უნდა გავაკეთოთ, არის მოითხოვოს საკრედიტო ბარათი
ნომრის შესახებ.
აქ, ჩვენ გამოყენებით getLongLong.
თქვენ შეიძლება ასევე გამოიყენება GetString, მაგრამ იმ შემთხვევაში, ნეტავ უნდა შეამოწმოს
რომ არ იყო არასამთავრობო რიცხვითი სიმბოლოების string.
ასე რომ, ჩვენ ვიყენებთ getLongLong.
>> გახსოვდეთ, რომ თქვენ ვერ შეძლებთ გამოიყენოთ რაღაც როგორიცაა GetInt, რადგან ნომერი იქნება
ძალიან დიდი, რათა შეწყობოდა რიცხვი.
მას შემდეგ, რაც ჩვენ, რომ ნომერი, ჩვენ აქ ამ ხოლო loop.
ასე რომ, ამ ხოლო loop ახორციელებს Luhn მიერ ალგორითმი, რომ თქვენ
იხილეთ pset სპეც.
>> და ეს რეალურად აპირებს იყოს ცოტა ჭკვიანი.
ასე რომ pset სპეც შეამჩნევთ, რომ ნაბიჯები ერთი და ორი ცალკე.
ჩვენ პირველი წასვლა მთელი საკრედიტო ბარათი ნომერი, ეძებს ყველა სხვა
ხასიათი დაწყებული მეორე ბოლო ხასიათი, და გამრავლებით მათ
და დასძინა, ყველა ციფრი.
შემდეგ, ჩვენ დაამატე ყველა სხვა ციფრი.
>> ასე რომ ნაცვლად აკეთებს იმ ორ ცალკეული ნაბიჯები, ჩვენ ვაპირებთ, რომ დააკავშიროთ
მათ ერთი iteration მეტი მთელი საკრედიტო ბარათის ნომერი.
აქ ჩვენ ვხედავთ int მიმდ. ციფრი შეადგენს საკრედიტო ბარათის ნომერი, mod 10.
რა არის საკრედიტო ბარათის ნომერი mod 10 აკეთებთ?
ეს გვაძლევს ბოლო ციფრი მთელ ნომერი.
ასე მახსოვს, რომ თუ ჩვენ გაყოფილი ნომერზე up 10, მაშინ დარჩენილ
იქნება რასაც ბოლო ციფრი არის.
23 იყოფა 10, დანარჩენი იქნება 3.
>> ასე რომ, ბოლო ციფრი, ახლა აქ, ჩვენ ვხედავთ ჩვენ branching on mult 2.
ასე რომ, რასაც ჩვენ ვაპირებთ იყოს გამოყენებით mult 2 for არის გამიჯვნის შორის
ერთი "ყველა სხვა ნომრები მეორე ციფრი "ნომრები.
Mult 2 დაწყებას აპირებს, რადგან ყალბი, რადგან ბოლო ციფრი არ უნდა
განიხილება საწყისი მეორე ბოლო ციფრი.
>> ასე რომ, შემდეგ დასასრულს ამ for loop, ჩვენ ვხედავთ, რომ ჩვენ ვაპირებთ, რომ შეიცვალოს ეს
ცრუ ჭეშმარიტი.
მომდევნო iteration of მარყუჟის, ის აპირებს განიხილება დიახ, სანამ
ბოლოს, როდესაც შევცვლით ეს ნამდვილი სიცრუეა.
იმის გამო, რომ მაშინ ჩვენ უნდა მესამე ბოლო ციფრი, რომელიც არ არის ერთი
ციფრები, რომ ჩვენ უნდა გავამრავლოთ 2.
>> ასე რომ, თუ ჩვენ არ უნდა იყოს ერთი იმ ციფრები, რომ ჩვენ გვინდა გავამრავლოთ 2,
ჩვენ ვხედავთ, ჩვენ დასძინა ჩვენს ჯამი.
და აქ, ჩვენ გამოყენებით ternary ოპერატორს ერთხელ
კვლავ იყოს ცოტა ჭკვიანი.
ასე რომ, თუ მიმდ. ციფრი არის ნაკლები ვიდრე 5, მაშინ ჩვენ შეგვიძლია უბრალოდ მიმდ. ციფრი ჯერ 2.
რომ მარტივია.
თუ ის 1, მაშინ ჩვენ გვინდა, რომ დაამატოთ 2.
თუ ეს 2,, ჩვენ გვინდა, რომ დაამატოთ 4.
თუ ეს 4, ჩვენ გვინდა, რომ დაამატოთ 8.
>> რა არის განსაკუთრებული 5?
ასევე, 5 ჯერ 2 არის 10.
და მახსოვს საწყისი pset სპეც რომ ჩვენ გვინდა, რომ დაამატოთ ნომერი
ნომერი ჯერ 2 და არა ნომერი ჯერ 2 თვით.
ასე რომ, თუ ორიგინალური ნომერი არის 7, 7 ჯერ 2 არის 14.
ჩვენ გვინდა, რომ დაამატოთ 1 plus 4 რაოდენობის, არ 14.
>> ასე რომ აქ, თუ ნომერი 5 ან მეტი, რას ვაკეთებთ არის მიმდ. ციფრი
ჯერ 2 მინუს 9.
და თუ ფიქრობთ, რომ 5 ჯერ 2 არის 10.
და ამიტომ ჩვენ დამატებით 1, რომელიც 10 მინუს 9.
6 ჯერ 2 არის 12.
ამიტომ ჩვენ დასძინა 3, რომელიც 12 მინუს 9.
და რომ მუშაობს ყველა ნომრები.
>> ასე რომ, ის, რაც ჩვენ დასძინა ჩვენს ჯამი.
და ეს ყველაფერი არის, რა გატარება ნაბიჯი ორი Luhn მიერ ალგორითმი, რომელიც მხოლოდ
დასძინა ციფრი, თუ ეს არ მოხდება უნდა იყოს ერთი ყველა სხვა ციფრი.
ასე რომ ერთხელ ჩვენ, რომ ეს არის შენახვა სიმღერა პირველი ორი გმირები
საკრედიტო ბარათის ნომერი, პირველი ორი ციფრები, რადგან ჩვენ საბოლოოდ აპირებს
გინდათ გამოიყენოთ, რომ აქ ქვემოთ, გადაამოწმონ, ყველა უფლება, ვიზა უნდა დაიწყოს
ამ და American Express საჭიროებების უნდა დაიწყოს, და ასე შემდეგ.
>> და ბოლოს, ჩვენ საკრედიტო ბარათი ნომერი შეადგენს საკრედიტო ბარათი
ნომერი იყოფა 10.
რატომ ვიქცევით ასე?
ისე, ჩვენ უბრალოდ სიფრთხილით უკანასკნელი ციფრი.
გამყოფი 10 გადავა მთელი რიგი დასრულდა.
ასე რომ, ახლა, როდესაც ჩვენ loop უკან, ჩვენ იქნება გატარება
მეორე ბოლო ციფრი.
მაშინ, როდესაც ჩვენ მოხვდა ეს კიდევ ერთხელ, ჩვენ ვაპირებთ შეწყვიტა მეორე გაგრძელდება
ციფრი, loop უკან, და გაუმკლავდეს მესამე გაგრძელდება ციფრი, და ასე შემდეგ, სანამ
ნომერი აღწევს 0, სადაც წერტილი ჩვენ შესვენება out of ხოლო loop.
>> ჩვენ ასევე შენახვა ტრეკზე საკრედიტო ბარათის ნომერი სიგრძის, რადგან ეს არის ის
მნიშვნელოვანია გამოიყოს თუ არა ის მოქმედი საკრედიტო ბარათის ნომერი.
ახლა, ერთხელ ჩვენ გამოითვლება ჯამი, შეგვიძლია თუ არა ის
არის სწორი ბარათი.
ჯამი mod 10 ნაწილი საქართველოს Luhn მიერ ალგორითმი.
იმ შემთხვევაში, თუ ჯამი mod 10 ბრუნდება რაღაც არასამთავრობო ნულოვანი, მაშინ ეს დაბრუნდება ნამდვილი,
ამ შემთხვევაში, ნომერი უნდა იყოს არასწორია.
>> წინააღმდეგ შემთხვევაში, თუ ჯამი mod 10 0, მაშინ ჩვენ შეგვიძლია გაგრძელდება.
ეს დიდი სხვაგან, თუ ამბობს, თუ პირველი ორი ციფრი არის ტოლი AMEX 1,
სადაც აქ, ჩვენ ვხედავთ, რომ AMEX 1, თითო Spec, 34.
და ჩვენ ასევე შედარება to AMEX 2, რომელიც არის 37.
და საკრედიტო ბარათის ნომერი სიგრძე ტოლი მოსალოდნელი American Express
ანკეტა სიგრძე, მაშინ ჩვენ შეგვიძლია ბეჭდვა American Express.
>> ჩვენ ყველაფერს გავაკეთებთ, რომ მსგავსი რამ Visa.
პირველი ორი ციფრი უნდა იყოს უფრო მეტი ვიდრე ან ტოლია 40 ან ნაკლები
ვიდრე ან ტოლია 49.
იმ წარმოადგენს მოქმედი ვიზა ბარათები.
და სიგრძე უნდა იყოს ტოლი Visa სიგრძე 1 ან Visa სიგრძე 2.
და ასე სიგრძის უნდა იყოს 13 ან 16 ნომერი ხანგრძლივი.
>> და ბოლოს MasterCard, ეს მსგავსი Visa, რომ პირველი ორი
ციფრები უნდა იყოს გარკვეული დიაპაზონი, და სიგრძით აუცილებელია
ზუსტად 16 თანრიგისაგან.
ასე რომ, თუ ნებისმიერი იმ შემთხვევაში გამართავს, შემდეგ კი პირველ შემთხვევაში, ჩვენ ბეჭდვა AMEX.
იმ შემთხვევაში, თუ ამ შემთხვევაში ფლობს, ჩვენ ბეჭდვა Visa.
იმ შემთხვევაში, თუ ამ შემთხვევაში ფლობს, ჩვენ ბეჭდვა MasterCard.
>> მაგრამ თუ არც იმ გამართავს, მაშინაც კი, თუ ჯამი იყო სწორი,
ჩვენ ჯერ კიდევ ბეჭდვა არასწორია.
იმიტომ, რომ ეს არ არის ერთი იმ ტიპის ბარათები.
ჩემი სახელი არის რობ, და ვიმედოვნებ, რომ ი საკრედიტო საინტერესო.