परिचय
जैसा कि आप में से कुछ लोग जानते हैं, URL में वास्तव में ऐसे पात्रों की एक सूची होती है जो विशेष चीजें करते हैं। उदाहरण के लिए, /चरित्र यूआरएल के कुछ हिस्सों को अलग करती है, और ?, &और =वर्ण सर्वर से क्वेरी पैरामीटर पारित करने के लिए उपयोग किया जाता है। वास्तव में, विशेष कार्यों के साथ वर्णों का एक समूह है $&+,/:;=?@:। जब आपको विशेष कार्यों के अलावा किसी अन्य कारण से URL में इन वर्णों का उपयोग करने की आवश्यकता होती है, तो आपको प्रतिशत-एन्कोडिंग नामक कुछ करना होगा ।
प्रतिशत एन्कोडिंग तब होती है जब आप किसी वर्ण का षोडश मान लेते हैं और किसी %वर्ण को उसके आरंभ में प्रस्तुत करते हैं। उदाहरण के लिए, चरित्र ?को एन्कोड किया जाएगा %3F, और चरित्र &को एन्कोड किया जाएगा %26। विशेष रूप से URL में, यह आपको इन वर्णों को पार्सिंग समस्याओं के कारण URL के माध्यम से डेटा के रूप में भेजने की अनुमति देता है। आपकी चुनौती एक स्ट्रिंग लेने की होगी, और सभी वर्णों को प्रतिशत-सांकेतिक शब्दों में बदलना होगा, जिन्हें इनकोड करने की आवश्यकता है।
चुनौती
आप एक प्रोग्राम या फ़ंक्शन लिखेंगे जिसमें एक ही स्ट्रिंग में कोडपॉइंट्स 00-FF (ASCII और विस्तारित ASCII वर्ण) के साथ वर्ण होते हैं। फिर आपको यदि आवश्यक हो तो प्रत्येक वर्ण प्रतिशत-एन्कोडेड के साथ एक ही स्ट्रिंग को आउटपुट या वापस करना होगा। बिल्ट-इन जो इस कार्य को पूरा करते हैं, उन्हें अनुमति नहीं है, न ही मानक कमियां हैं। संदर्भ के लिए, यहां प्रत्येक वर्ण की एक सूची दी गई है, जिसे प्रतिशत एनकोडेड करने की आवश्यकता है:
- नियंत्रण वर्ण (कोडपॉइंट 00-1F और 7F)
- विस्तारित ASCII वर्ण (कोडपॉइंट 80-FF)
- आरक्षित वर्ण (
$&+,/:;=?@अर्थात कोडपॉइंट्स 24, 26, 2B, 2C, 2F, 3A, 3B, 3D, 3B, 40) - असुरक्षित वर्ण (
" <>#%{}|\^~[]`अर्थात, कोड 20, 22, 3C, 3E, 23, 25, 7B, 7D, 7C, 5C, 5E, 7E, 5B, 5D, 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में प्रश्न चिह्न नहीं है।