একটি সংখ্যা দেওয়া হলে লুহন ফর্মুলা অনুযায়ী সেটি বৈধ কি না তা নির্ধারণ করুন।
লুহন অ্যালগরিদম হলো একটি সরল চেকসাম ফর্মুলা, যা নানা ধরনের আইডেন্টিফিকেশন নম্বর, যেমন ক্রেডিট কার্ড নম্বর ও কানাডিয়ান সোশ্যাল ইনস্যুরেন্স নম্বর যাচাই করতে ব্যবহৃত হয়।
কাজটি হলো, একটি প্রদত্ত স্ট্রিং বৈধ কি না তা যাচাই করা।
১ বা তার কম দৈর্ঘ্যের স্ট্রিং বৈধ নয়। ইনপুটে স্পেস থাকতে পারে, তবে যাচাই করার আগে সেগুলো বাদ দিতে হবে। এ ছাড়া ডিজিট নয় এমন সব ক্যারেক্টার অনুমোদিত নয়।
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
৫৭ সংখ্যাটি ১০ দিয়ে নিঃশেষে বিভাজ্য নয়, তাই এই সংখ্যাটি বৈধ নয়।
Exercism-এ সাইন আপ করুন, Nim ট্র্যাকের 70টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।
আমরা Luhn-এর ৮টি ভিন্ন সংস্করণ ঘেঁটে দেখি; শুরু করি অত্যন্ত পরিপাটি একটি Ruby ইমপ্লিমেন্টেশন দিয়ে, তারপর কিছু ইম্পারেটিভ ও ফাংশনাল পদ্ধতি ঘেঁটি অবশেষে পৌঁছাই একটি SQLite সংস্করণে, যার পাঠোদ্ধার করতে Erik আর Jeremy-কে বেশ পরিশ্রম করতে হয়েছিল!