Luhn

Luhn

সহজ

নির্দেশনা

একটি সংখ্যা দেওয়া হলে লুহন ফর্মুলা অনুযায়ী সেটি বৈধ কি না তা নির্ধারণ করুন।

লুহন অ্যালগরিদম হলো একটি সরল চেকসাম ফর্মুলা, যা নানা ধরনের আইডেন্টিফিকেশন নম্বর, যেমন ক্রেডিট কার্ড নম্বর ও কানাডিয়ান সোশ্যাল ইনস্যুরেন্স নম্বর যাচাই করতে ব্যবহৃত হয়।

কাজটি হলো, একটি প্রদত্ত স্ট্রিং বৈধ কি না তা যাচাই করা।

একটি সংখ্যা যাচাই করা

১ বা তার কম দৈর্ঘ্যের স্ট্রিং বৈধ নয়। ইনপুটে স্পেস থাকতে পারে, তবে যাচাই করার আগে সেগুলো বাদ দিতে হবে। এ ছাড়া ডিজিট নয় এমন সব ক্যারেক্টার অনুমোদিত নয়।

উদাহরণ ১: বৈধ ক্রেডিট কার্ড নম্বর

4539 3195 0343 6467

লুহন অ্যালগরিদমের প্রথম ধাপ হলো ডান দিক থেকে শুরু করে প্রতি দ্বিতীয় ডিজিটকে দ্বিগুণ করা। আমরা দ্বিগুণ করব

4_3_ 3_9_ 0_4_ 6_6_

কোনো সংখ্যা দ্বিগুণ করার ফলে ৯-এর চেয়ে বড় সংখ্যা এলে গুণফল থেকে ৯ বিয়োগ করুন। আমাদের দ্বিগুণ করার ফলাফল:

8569 6195 0383 3437

এরপর সব ডিজিট যোগ করুন:

8+5+6+9+6+1+9+5+0+3+8+3+3+4+3+7 = 80

যোগফল যদি ১০ দিয়ে নিঃশেষে বিভাজ্য হয়, তাহলে সংখ্যাটি বৈধ। এই সংখ্যাটি বৈধ!

উদাহরণ ২: অবৈধ ক্রেডিট কার্ড নম্বর

8273 1232 7352 0569

ডান দিক থেকে শুরু করে দ্বিতীয় ডিজিটগুলো দ্বিগুণ করুন

7253 2262 5312 0539

ডিজিটগুলো যোগ করুন

7+2+5+3+2+2+6+2+5+3+1+2+0+5+3+9 = 57

৫৭ সংখ্যাটি ১০ দিয়ে নিঃশেষে বিভাজ্য নয়, তাই এই সংখ্যাটি বৈধ নয়।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Nim Exercism

Luhn শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Nim ট্র্যাকের 70টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।

ডিপ ডাইভ: Luhn!

আমরা Luhn-এর ৮টি ভিন্ন সংস্করণ ঘেঁটে দেখি; শুরু করি অত্যন্ত পরিপাটি একটি Ruby ইমপ্লিমেন্টেশন দিয়ে, তারপর কিছু ইম্পারেটিভ ও ফাংশনাল পদ্ধতি ঘেঁটি অবশেষে পৌঁছাই একটি SQLite সংস্করণে, যার পাঠোদ্ধার করতে Erik আর Jeremy-কে বেশ পরিশ্রম করতে হয়েছিল!