ভূমিকা
আপনারা কেউ কেউ হয়ত জানেন, ইউআরএলগুলিতে আসলে অক্ষরের একটি তালিকা থাকে যা বিশেষ কাজ করে। উদাহরণস্বরূপ, /চরিত্র URL এর অংশের আলাদা, এবং ?, &এবং =অক্ষর সার্ভারে ক্যোয়ারী পরামিতি পাস করতে ব্যবহৃত হয়। আসলে বিশেষ ফাংশন দিয়ে অক্ষর একটি গুচ্ছ হল: $&+,/:;=?@। যখন বিশেষ ক্রিয়াকলাপ ছাড়াও অন্য কোনও কারণে আপনাকে এই অক্ষরগুলি ইউআরএলটিতে ব্যবহার করতে হবে, তখন আপনাকে শতাংশ-এনকোডিং বলে কিছু করতে হবে ।
শতকরা এনকোডিং হ'ল আপনি যখন কোনও চরিত্রের হেক্সাডেসিমাল মান নিয়ে যান এবং এর শুরুতে একটি %অক্ষর প্রেন্ডেন্ড করেন । উদাহরণস্বরূপ, চরিত্রটি ?এনকোড হবে %3Fএবং অক্ষরটি &এনকোড হবে %26। বিশেষত একটি ইউআরএলে, এটি আপনাকে পার্সিংয়ের সমস্যা তৈরি না করেই এই অক্ষরগুলি URL হিসাবে ডেটা হিসাবে প্রেরণ করতে দেয়। আপনার চ্যালেঞ্জটি হবে একটি স্ট্রিং নেওয়া এবং এনকোড করা দরকার এমন সমস্ত অক্ষরকে শতাংশ-এনকোড করা।
চ্যালেঞ্জ
আপনি এমন একটি প্রোগ্রাম বা ফাংশন লিখবেন যা কোডডপয়েন্টস 00-এফএফ (এএসসিআইআই এবং বর্ধিত এএসসিআইআই অক্ষর) সহ অক্ষর সমন্বিত একটি একক স্ট্রিংয়ে নেবে। তারপরে আপনাকে প্রয়োজনে প্রতিটি অক্ষর শতকরা-এনকোড সহ একই স্ট্রিংটি আউটপুট দিতে হবে বা ফিরে আসতে হবে। এই কাজটি সম্পাদনকারী বিল্ট-ইনগুলি অনুমোদিত নয় বা মানক ফাঁকও নয়। রেফারেন্সের জন্য, এখানে প্রতিটি অক্ষরের একটি তালিকা রয়েছে যা শতাংশে এনকোড করা দরকার:
- নিয়ন্ত্রণের অক্ষর (কোডপয়েন্টস 00-1F এবং 7 এফ)
- প্রসারিত ASCII অক্ষর (কোডপয়েন্টস 80-এফএফ)
- সংরক্ষিত অক্ষর (
$&+,/:;=?@যেমন 24, 26, 2 বি, 2 সি, 2 এফ, 3 এ, 3 বি, 3 ডি, 3 এফ, 40) - অনিরাপদ অক্ষর (
" <>#%{}|\^~[]`যেমন কোড 20, 22, 3 সি, 3 ই, 23, 25, 7 বি, 7 ডি, 7 সি, 5 সি, 5 ই, 7 ই, 5 বি, 5 ডি, 60)
এখানে একই তালিকা রয়েছে তবে এর পরিবর্তে দশমিক কোডপয়েন্টের তালিকা হিসাবে:
0-31, 32, 34, 35, 36, 37, 38, 43, 44, 47, 58, 59, 60, 62, 61, 63, 64, 91, 92, 93, 94, 96, 123, 124, 125, 126, 127, 128-255
এটি কোড গল্ফ, তাই বাইটের মধ্যে সংক্ষিপ্ততম কোড (বা অনুমোদিত বিকল্প স্কোরিং পদ্ধতি) জয়!
পরীক্ষার কেস
http://codegolf.stackexchange.com/ => http%3A%2F%2Fcodegolf.stackexchange.com%2F
[@=>]{#} => %5B%40%3D%3E%5D%7B%23%7D
Test String => Test%20String
ÑÉÐÔ® => %D1%C9%D0%D4%AE
=> %0F%16%7F (Control characters 0F, 16, and 7F)
¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ => %80%81%82%83%84%85%86%87%88%89%8A%8B%8C%8D%8E%8F%90%91%92%93%94%95%96%97%98%99%9A%9B%9C%9D%9E%9F%A0%A1%A2%A3%A4%A5%A6%A7%A8%A9%AA%AB%AC%AD%AE%AF%B0%B1%B2%B3%B4%B5%B6%B7%B8%B9%BA%BB%BC%BD%BE%BF%C0%C1%C2%C3%C4%C5%C6%C7%C8%C9%CA%CB%CC%CD%CE%CF%D0%D1%D2%D3%D4%D5%D6%D7%D8%D9%DA%DB%DC%DD%DE%DF%E0%E1%E2%E3%E4%E5%E6%E7%E8%E9%EA%EB%EC%ED%EE%EF%F0%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FB%FC%FD%FE%FF (Extended ASCII characters 80-FF)
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ => %20!%22%23%24%25%26'()*%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D%7E
EFপ্রশ্ন চিহ্ন নেই।