এনকোডিং কীভাবে কাজ করে
বিটের একটি তালিকা দেওয়া হয়েছে:
- একটি প্রাইম ধরে রাখা (দিয়ে শুরু
2
) - একটি তালিকা আছে
- ইনপুট প্রতিটি বিট জন্য
- যদি এটি পূর্বের বিটের মতো হয় তবে আপনি তালিকায় থাকা প্রধানটিকে যুক্ত করুন
- যদি এটি আলাদা হয় তবে পরবর্তী প্রধানটিকে ধরে রাখুন এবং এটিকে তালিকায় যুক্ত করুন
- আপনার তালিকার সমস্ত সংখ্যার পণ্যটি ফিরিয়ে দিন
- প্রথম বিটের জন্য, ধরে নিন আগের বিটটি ছিল
0
দ্রষ্টব্য: এই পদক্ষেপগুলি কেবল উদাহরণস্বরূপ, আপনার সেগুলি অনুসরণ করার দরকার নেই।
উদাহরণ
Input: 001
hold 2
0: add 2 to the list
0: add 2 to the list
1: hold 3, add 3 to the list
list: 2,2,3
Output: 12
Input: 1101
hold 2
1: hold 3, add 3 to the list
1: add 3 to the list
0: hold 5, add 5 to the list
1: hold 7, add 7 to the list
list: 3,3,5,7
Output: 315
আরও কয়েকটি উদাহরণ:
000000000 -> 512
111111111 -> 19683
010101010 -> 223092870
101010101 -> 3234846615
011101101 -> 1891890
000101101010010000 -> 3847834029582062520
চ্যালেঞ্জ
এই এনকোডিং পদ্ধতির জন্য একটি এনকোডার এবং একটি ডিকোডার লিখুন ।
(ডিকোডারটি এনকোডারটির প্রক্রিয়াটিকে বিপরীত করে)।
ইনপুট আউটপুট
এনকোডারটি কোনও যুক্তিসঙ্গত ফর্ম্যাটে ইনপুট নিতে পারে
এনকোডারটিকে অবশ্যই একটি পূর্ণসংখ্যা বা একটি স্ট্রিং আউটপুট করতে হবে
ডিকোডারটি অবশ্যই এনকোডারটি একই বিন্যাসে ইনপুট নেবে
এনকোডারটি ইনপুট হিসাবে গ্রহণ করে একই ফর্ম্যাটটি ডিকোডারকে অবশ্যই আউটপুট করতে হবে
অন্য কথায় decoder( encoder( input ) ) === input
মন্তব্য
- ডিকোডারটি ধরে নিতে পারে যে এর ইনপুটটি ডিকোডেবল
- আপনার উত্তর শুধুমাত্র পূর্ণসংখ্যার সঙ্গে মোকাবিলা করার জন্য যে আপনার ভাষা স্থানীয়ভাবে ব্যবহার (ছাড়া সমর্থন করতে পারে না হয়েছে
long
,bigInt
ইত্যাদি), যুক্তিসঙ্গত হতে যদি আপনি ভাষা শুধুমাত্র একটি ints আপ 1 সমর্থন করে, হয়তো একটি উত্তর পোস্ট পুনর্বিবেচনা
স্কোরিং
আপনার স্কোরটি এনকোডার এবং ডিকোডারের বাইটের দৈর্ঘ্যের সমষ্টি।
আপনার যদি কোনও মডিউল আমদানি করতে প্রয়োজন হয় তবে আপনার এনকোডার এবং ডিকোডার একই ফাইলটিতে সহাবস্থান করতে পারে এবং পুনরায় ব্যবহার করা যেতে পারে (ফাংশনগুলির মতো) কেবলমাত্র একবার আমদানি গণনা করা যেতে পারে।
ডিফল্ট লুফোলগুলি নিষিদ্ধ।
এটি কোড-গল্ফ তাই প্রতিটি ভাষার জন্য সংক্ষিপ্ততম স্কোর জেতে।