Global Verification Authority-তে আপনাকে এইমাত্র একটি গুরুত্বপূর্ণ দায়িত্ব দেওয়া হয়েছে। শহরজুড়ে, অনলাইন কেনাকাটা থেকে নিরাপদ লগইন পর্যন্ত, অসংখ্য কাজ ক্রেডিট কার্ড নম্বর, ব্যাংক অ্যাকাউন্ট নম্বর, লেনদেন কোড এবং ট্র্যাকিং ID-এর মতো সংখ্যাসূচক আইডেন্টিফায়ারের নির্ভুলতার উপর নির্ভর করে। Luhn অ্যালগরিদম হলো একটি সহজ চেকসাম ফর্মুলা, যা এই সংখ্যাগুলো বৈধ ও ত্রুটিমুক্ত কি না তা নিশ্চিত করতে ব্যবহৃত হয়।
আইডেন্টিফায়ারের একটি ব্যাচ এইমাত্র আপনার ডেস্কে পৌঁছেছে। তাদের সবগুলোকে Luhn টেস্ট পাস করতে হবে, যাতে তাদের বৈধতা নিশ্চিত হয়। কোনোটি ফেল করলে সেটিকে অবৈধ হিসেবে চিহ্নিত করা হবে, যা ভুল লেনদেন বা অননুমোদিত অ্যাক্সেসের মতো এরর বা জালিয়াতি প্রতিরোধ করবে।
আপনি কি নিশ্চিত করতে পারবেন যে এটি সঠিকভাবে করা হবে? অনেক পরিষেবার অখণ্ডতা আপনার উপর নির্ভর করে।
একটি ক্রেডিট কার্ড নম্বর লুহ্ন সূত্র অনুযায়ী বৈধ কি না তা নির্ণয় করুন।
সংখ্যাটি একটি স্ট্রিং হিসেবে দেওয়া হবে।
১ বা তার কম দৈর্ঘ্যের স্ট্রিং বৈধ নয়। ইনপুটে স্পেস থাকতে পারে, তবে যাচাই করার আগে সেগুলো সরিয়ে ফেলতে হবে। এছাড়া অন্য সব অঙ্ক-বহির্ভূত ক্যারেক্টার অনুমোদিত নয়।
4539 3195 0343 6467
লুহ্ন অ্যালগরিদমের প্রথম ধাপ হলো, ডান দিক থেকে শুরু করে প্রতি দ্বিতীয় অঙ্ককে দ্বিগুণ করা। আমরা দ্বিগুণ করব
4539 3195 0343 6467
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ (double these)
দ্বিগুণ করার ফলে সংখ্যাটি ৯-এর চেয়ে বড় হয়ে গেলে গুণফল থেকে ৯ বিয়োগ করতে হবে। আমাদের দ্বিগুণ করার ফলাফল:
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-এ সাইন আপ করুন, Erlang ট্র্যাকের 85টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।
আমরা Luhn-এর ৮টি ভিন্ন সংস্করণ ঘেঁটে দেখি; শুরু করি অত্যন্ত পরিপাটি একটি Ruby ইমপ্লিমেন্টেশন দিয়ে, তারপর কিছু ইম্পারেটিভ ও ফাংশনাল পদ্ধতি ঘেঁটি অবশেষে পৌঁছাই একটি SQLite সংস্করণে, যার পাঠোদ্ধার করতে Erik আর Jeremy-কে বেশ পরিশ্রম করতে হয়েছিল!