এটি একটি খুব সাধারণ অ্যালগরিদম, আমি নিশ্চিত যে অনেকগুলি বিভিন্ন ভাষায় সমাধান করা যেতে পারে। স্পেনে আইডি কার্ডগুলি ( ডিএনআই নামে পরিচিত ) 8 টি সংখ্যা এবং একটি নিয়ন্ত্রণ চরিত্র নিয়ে গঠিত। নিয়ন্ত্রণের অক্ষরটি নিম্নলিখিত অ্যালগরিদম দিয়ে গণনা করা হয়: সংখ্যাটি 23 দ্বারা ভাগ করুন, অপারেশনটির অবশিষ্ট অংশটি নিন এবং এই টেবিল অনুসারে একটি চরিত্রের সাথে এটি প্রতিস্থাপন করুন:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
T R W A G M Y F P D X B N J Z S Q V H L C K E
যদি ডিএনআই স্পেনে বসবাসকারী কোনও বিদেশী ব্যক্তির অন্তর্ভুক্ত হয় তবে প্রথম সংখ্যাটি পরিবর্তিত হয় X, Yবা Zএটি এনআইই নামে পরিচিত । এই ক্ষেত্রে, নিয়ন্ত্রণ অক্ষর গণনা করার আগে নিম্নলিখিত বিকল্পগুলি তৈরি করা হয়:
X Y Z
0 1 2
অনলাইনে প্রচুর ক্যালকুলেটর রয়েছে যা আপনাকে নিয়ন্ত্রণের অক্ষর পেতে সহায়তা করে তবে আপনি এই কোডটি কত সংক্ষেপে লিখতে পারেন? একটি অ্যালগরিদম (প্রোগ্রাম বা ফাংশন) লিখুন stringযা ডিএনআই নম্বর সহ একটি পায় (এটি সর্বদা 8 টি বর্ণচিহ্নযুক্ত থাকবে) এবং গণনা করা একক নিয়ন্ত্রণ অক্ষর এবং আরও কিছুই দেয় না (একটি অনুবর্তনযোগ্য নতুন লাইন গৃহীত হয়)।
মন্তব্য:
- ডিএনআই সর্বদা বড় হাতের অক্ষরে লেখা থাকে, তবে আপনার অ্যালগরিদমে আপনি ইনপুট এবং আউটপুটটিকে উচ্চ - বা লোয়ারকেস হিসাবে বেছে নিতে পারেন, কেবল সামঞ্জস্যপূর্ণ হতে হবে।
- বাস্তব জীবনে, 2008 আগে জারি কিছু NIEs পর 8 ডিজিটের আছে
X,YবাZ, কিন্তু এই খেলা উদ্দেশ্যে, আপনি বিবেচনা করতে পারেন তারা 7 টি সংখ্যা আছে তারা আজকাল আছে। - আপনি বিবেচনা করতে পারেন যে ইনপুট স্ট্রিংটিতে সর্বদা 8 টি অক্ষর থাকবে তবে সেগুলি যদি "8 ডিজিট" ফর্ম্যাটে না হয় বা "[XYZ] প্লাস 7 ডিজিট" ফর্ম্যাটে না থাকে, আপনাকে অবশ্যই একটি ত্রুটি (আপনার পছন্দের) ফিরিয়ে দিতে হবে বা কেবল নিক্ষেপ করতে হবে একটি ব্যতিক্রম.
পরীক্ষার কেস:
00000010 -> X (HRM Juan Carlos I's DNI number)
01234567 -> L
98765432 -> M
69696969 -> T
42424242 -> Y
Z5555555 -> W (Z=2)
Y0000369 -> S (Y=1)
A1234567 -> <Error code or exception>
1231XX12 -> <Error code or exception>
এটি কোড-গল্ফ , তাই প্রতিটি ভাষার পক্ষে সংক্ষিপ্ততম কোডটি জয় পেতে পারে!