ভূমিকা
অতীতে আমাদের এখানে কয়েকটি বেস রূপান্তরকরণের চ্যালেঞ্জ রয়েছে, তবে স্বেচ্ছাসেবী দৈর্ঘ্যের সংখ্যাগুলি মোকাবিলা করার জন্য অনেকগুলি ডিজাইন করা হয়নি (এটি বলতে গেলে এমন সংখ্যাগুলি যথেষ্ট যে তারা পূর্ণসংখ্যার ডেটাটাইপকে উপচে ফেলেছে) এবং এর মধ্যে বেশিরভাগই কিছুটা অনুভূত হয়েছিল জটিল। আমি কৌতূহলী যে কীভাবে বেস কোডের এই পরিবর্তনটি পেতে পারে olf
চ্যালেঞ্জ
আপনার পছন্দের ভাষায় এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা একটি বেসের একটি স্ট্রিংকে অন্য বেসের স্ট্রিংয়ে রূপান্তর করতে পারে। ইনপুট রূপান্তরিত করার জন্য সংখ্যা (স্ট্রিং), থেকে-বেস (বেস -10 নম্বর), থেকে-বেস (বেস -10 নম্বর), এবং অক্ষর সেট (স্ট্রিং) হওয়া উচিত। আউটপুট রূপান্তরিত নম্বর (স্ট্রিং) হওয়া উচিত।
আরও কিছু বিবরণ এবং নিয়ম নীচে রয়েছে:
- রূপান্তরিত করার সংখ্যাটি একটি অ-নেতিবাচক পূর্ণসংখ্যা হবে (যেহেতু
-
এবং.
চরিত্রের সেটে হতে পারে)। সুতরাং খুব আউটপুট হবে। - শীর্ষস্থানীয় শূন্যগুলি (চরিত্রের সেটটিতে প্রথম অক্ষর) ছাঁটাই করা উচিত। ফলাফলটি যদি শূন্য হয় তবে একটি একক শূন্য সংখ্যা থাকবে।
- নূন্যতম সমর্থিত বেস ব্যাপ্তিটি মুদ্রণযোগ্য আসকি অক্ষর সমন্বয়ে 2 থেকে 95 অবধি।
- রূপান্তরিত করতে সংখ্যার ইনপুট, অক্ষর সেট এবং আউটপুট সমস্ত স্ট্রিং ডেটাটাইপের হতে হবে। বেসগুলি অবশ্যই বেস -10 পূর্ণসংখ্যা ডেটাটাইপ (বা পূর্ণসংখ্যার ভাসমান) এর হতে হবে।
- ইনপুট নম্বর স্ট্রিংয়ের দৈর্ঘ্য খুব বড় হতে পারে। কোনও বুদ্ধিমান ন্যূনতম পরিমাণ নির্ধারণ করা শক্ত, তবে এটি কমপক্ষে 1000 টি অক্ষর পরিচালনা করতে সক্ষম হবে এবং একটি শালীন মেশিনে 10 সেকেন্ডেরও কম সময়ে 100 টি অক্ষরের ইনপুট সম্পূর্ণ করতে সক্ষম হবে (এই ধরণের সমস্যার জন্য খুব উদার, তবে আমি চাই না) ফোকাস হতে গতি)।
- আপনি পরিবর্তিত-বেস ফাংশনগুলিতে নির্মিত ব্যবহার করতে পারবেন না।
- অক্ষর সেট ইনপুট যে কোনও বিন্যাসে হতে পারে, কেবল আদর্শ 0-9a-z ... ইত্যাদি নয়।
- ধরে নিন যে কেবল বৈধ ইনপুট ব্যবহার করা হবে। ত্রুটি পরিচালনার বিষয়ে চিন্তা করবেন না।
বিজয়ীটি সংক্ষিপ্ততম কোড দ্বারা নির্ধারিত হবে যা মানদণ্ডটি সম্পাদন করে। এগুলি কমপক্ষে base বেস -10 দিনের মধ্যে বা যদি / যখন পর্যাপ্ত জমা দেওয়া হয়েছে তা নির্বাচিত হবে। টাই হওয়ার ক্ষেত্রে, যে কোডটি দ্রুত চলে তা বিজয়ী হবে। যদি গতি / পারফরম্যান্সে পর্যাপ্ত পরিমাণ থাকে তবে আগে যে উত্তরটি আসে তা জয়ী হয়।
উদাহরণ
আপনার কোড হ্যান্ডেল করতে সক্ষম হওয়া ইনপুট এবং আউটপুট এর কয়েকটি উদাহরণ এখানে রয়েছে:
F("1010101", 2, 10, "0123456789")
> 85
F("0001010101", 2, 10, "0123456789")
> 85
F("85", 10, 2, "0123456789")
> 1010101
F("1010101", 10, 2, "0123456789")
> 11110110100110110101
F("bababab", 2, 10, "abcdefghij")
> if
F("10", 3, 2, "0123456789")
> 11
F("<('.'<)(v'.'v)(>'.'>)(^'.'^)", 31, 2, "~!@#$%^v&*()_+-=`[]{}|';:,./<>? ")
> !!~~~~~~~!!!~!~~!!!!!!!!!~~!!~!!!!!!~~!~!~!!!~!~!~!!~~!!!~!~~!!~!!~~!~!!~~!!~!~!!!~~~~!!!!!!!!!!!!~!!~!~!~~~~!~~~~!~~~~~!~~!!~~~!~!~!!!~!~~
F("~~~~~~~~~~", 31, 2, "~!@#$%^v&*()_+-=`[]{}|';:,./<>? ")
> ~
F("9876543210123456789", 10, 36, "0123456789abcdefghijklmnopqrstuvwxyz")
> 231ceddo6msr9
F("ALLYOURBASEAREBELONGTOUS", 62, 10, "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
> 6173180047113843154028210391227718305282902
F("howmuchwoodcouldawoodchuckchuckifawoodchuckcouldchuckwood", 36, 95, "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#$%^&*()_-+=[{]}\\|;:'\",<.>/? ")
> o3K9e(r_lgal0$;?w0[`<$n~</SUk(r#9W@."0&}_2?[n
F("1100111100011010101010101011001111011010101101001111101000000001010010100101111110000010001001111100000001011000000001001101110101", 2, 95, "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#$%^&*()_-+=[{]}\\|;:'\",<.>/? ")
> this is much shorter
You cannot use built in change-of-base functions to convert the entire input string/number at once
? বিশেষত, আমি কি ইনপুটটিকে মধ্যবর্তী বেসে রূপান্তর করতে একটি বিল্ট-ইন ব্যবহার করতে পারি? তাহলে আমি কি টার্গেট বেসে রূপান্তর করতে একটি বিল্ট-ইন ব্যবহার করতে পারি? কিছু চাইবে convert input with canonical form for given base; convert to base 10; convert to target base; convert back to specified character set with string replacement
?