আছে জনপ্রিয় যেমন Luhn যেমন Check digit টি আলগোরিদিম এবং তারপর আছে ভাল উদাহরণস্বরূপ Damm অ্যালগরিদম বেশী,। লুহনের মতো অ্যালগরিদমগুলির জনপ্রিয়তার পিছনে একমাত্র সম্ভাব্য কারণ হ'ল কোডগুলি তাদের গল্ফড বাস্তবায়ন করে। এর অর্থ হ'ল একটি সম্প্রদায় হিসাবে আমরা আরও ভাল অ্যালগরিদমের গল্ফড বাস্তবায়ন সরবরাহ করে বিশ্ব পরিবর্তন করার ক্ষমতা রাখি।
সুতরাং এই চ্যালেঞ্জটি হ'ল আপনার পছন্দের ভাষায় কোনও ফাংশন বা একটি সম্পূর্ণ প্রোগ্রাম লিখে বিশ্ব পরিবর্তন করা যা ব্যবহার করে একটি চেক ডিজিট গণনা করে ড্যাম অ্যালগরিদম । স্বল্প সংখ্যক অক্ষরের উত্তর (বাইট নয়) কয়েক সপ্তাহের মধ্যে বিজয়ী হিসাবে বেছে নেওয়া হবে। নোট করুন যে সমস্ত সহায়তা ফাংশন এবং অপারেশন টেবিলের ঘোষণাকে অবশ্যই অক্ষর গণনায় অন্তর্ভুক্ত করা উচিত। টাই করার ক্ষেত্রে সর্বাধিক জনপ্রিয় উত্তরটি বেছে নেওয়া হবে।
এই অ্যালগরিদম একটি অপারেশন টেবিলের চারদিকে ঘোরে যা অবশ্যই দুর্বলভাবে সম্পূর্ণ অ্যান্টি-সিমেট্রিক অর্ডারের কোসিগ্রুপ হতে হবে। অপারেশন টেবিল যা উইকিপিডিয়া নিবন্ধে পাওয়া যাবে Damm অ্যালগরিদম প্রায় এক যা এই চ্যালেঞ্জ ব্যবহৃত হবে না। সম্পূর্ণতার জন্য আমি নীচে এটি পুনরুত্পাদন করব:
| 0 1 2 3 4 5 6 7 8 9
----+----------------------------------------
0 | 0 3 1 7 5 9 8 6 4 2
1 | 7 0 9 2 1 5 4 8 6 3
2 | 4 2 0 6 8 7 1 3 5 9
3 | 1 7 5 0 9 8 3 4 2 6
4 | 6 1 2 3 0 4 5 9 7 8
5 | 3 6 7 4 2 0 9 5 8 1
6 | 5 8 6 9 7 2 0 1 3 4
7 | 8 9 4 5 3 6 2 0 1 7
8 | 9 4 3 8 6 1 7 2 0 5
9 | 2 5 8 1 4 3 6 7 9 0
সংক্ষেপে (বিস্তারিত জানার জন্য উইকিপিডিয়া নিবন্ধটি দেখুন ) অ্যালগরিদম নীচে কাজ করে:
- আপনি প্রক্রিয়া করার জন্য অঙ্কের তালিকা এবং একটি অন্তর্বর্তীকালীন সংখ্যা যা 0 তে সেট করা আছে তা দিয়ে শুরু করুন।
- তালিকার প্রতিটি অঙ্কের জন্য আপনি কলাম সূচক হিসাবে অঙ্কটি এবং সারি সূচক হিসাবে পূর্ববর্তী অন্তর্বর্তী অঙ্কটি ব্যবহার করে একটি নতুন অন্তর্বর্তী সংখ্যা গণনা করুন।
- চূড়ান্ত অন্তর্বর্তী সংখ্যা হ'ল চেক ডিজিট। আপনি যদি এমন একটি নম্বর যাচাই করছেন যা ইতিমধ্যে একটি যুক্ত চেক সংখ্যা রয়েছে চূড়ান্ত অন্তর্বর্তী সংখ্যা 0 হয় যদি নম্বরটি বৈধ হয়।
আপনার প্রোগ্রাম বা ফাংশনটিতে এমন একটি স্ট্রিং গ্রহণ করতে হবে যাতে শূন্য ব্যতীত অন্য কোনও অক্ষর থাকতে পারে, তবে এটি কেবল স্ট্রিংয়ের অঙ্কগুলির সাথেই উদ্বেগ করা উচিত। এটি অবশ্যই মুদ্রণ করতে হবে (যদি কোনও প্রোগ্রাম থাকে) অথবা গণনা করা চেক ডিজিট সংযুক্ত করে মূল স্ট্রিংটি (যদি কোনও ফাংশন) ফিরে আসে। আপনি যদি কোনও প্রোগ্রাম লিখতে পছন্দ করেন তবে প্রোগ্রামটি ইনপুটটিকে আর্গুমেন্ট হিসাবে বা স্ট্যান্ডার্ড ইনপুট হিসাবে গ্রহণ করতে পারে। যদি ইনপুট স্ট্রিংটি খালি থাকে বা কোনও অঙ্ক না থাকে আপনাকে অবশ্যই ফিরে আসতে হবে বা একটি শূন্য সংযোজন করতে হবে।
কিছু উদাহরণ:
Input | Output
------------+-------------
42 | 427
427 | 4270
2 to 2 | 2 to 29
23 42 76- | 23 42 76-5
- | -0