चुनौती
इस चुनौती का लक्ष्य एक चैटबॉट बनाना है जो स्टैक एक्सचेंज के चैटरूम में चल सकता है। आपके बॉट को यह पता लगाने में सक्षम होने की आवश्यकता होती है कि किसी उपयोगकर्ता द्वारा विशिष्ट कमांड पोस्ट किए गए हैं और उसका जवाब दें। यह आदेशों की सूची है, और आपके बॉट को क्या करना चाहिए:
!!newest: इस साइट (codegolf.SE) पर पोस्ट किए गए सबसे नए सवाल का शीर्षक (कोई लिंक नहीं, बल्कि शीर्षक) का उत्पादन।!!metanewest: मेटा साइट (meta.codegolf.SE) पर पोस्ट किए गए नवीनतम प्रश्न का शीर्षक आउटपुट।!!questioncount: वर्तमान प्रश्न गणना आउटपुट।!!metaquestioncount: मेटा साइट पर वर्तमान प्रश्न गणना को आउटपुट करता है।!!tag tagname: पहले पैरामीटर के रूप में दिए गए टैग के टैग अंश (संक्षिप्त विवरण) को आउटपुट करें।!!metatag tagname: ऊपर के समान, लेकिन मेटा साइट के लिए।!!featured: वर्तमान में एक इनाम है कि सवालों की गिनती का उत्पादन।!!metafeatured: मेटा पर [फ़ीचर्ड] टैग वाले प्रश्नों की गिनती को आउटपुट करें ।
नियम
- आपको एक संपूर्ण कार्यक्रम लिखना चाहिए, न कि स्निपेट या फ़ंक्शन।
- यदि यह आवश्यक है, तो आप इनपुट के रूप में उपयोगकर्ता नाम और पासवर्ड का अनुरोध कर सकते हैं (इनपुट, STDIN, कमांड लाइन तर्क के लिए संकेत देना)। यह आवश्यक होगा यदि आप उपयोग करते हैं, उदाहरण के लिए, पायथन या रूबी, लेकिन यह आवश्यक नहीं होगा यदि आप जावास्क्रिप्ट का उपयोग करते हैं और चैट रूम पेज पर ही स्क्रिप्ट चलाते हैं।
- आपको WebSockets जैसे सामान करने के लिए बाहरी पुस्तकालयों का उपयोग करने की अनुमति है। इन पुस्तकालयों को आपके चरित्र की गिनती के लिए गणना करने की आवश्यकता नहीं है।
आप एक बाहरी चैट आवरण का उपयोग कर सकते हैं (लेकिन आपको ऐसा नहीं करना है, अपना खुद का लेखन प्रोत्साहित किया जाता है), और फिर उसे वर्ण गणना के लिए गिनना होगा। आपको रैपर कोड बदलने की भी अनुमति नहीं है। यदि आप इसका उपयोग करते हैं, तो आप इसे बिना किसी संशोधन के उपयोग करते हैं और सभी वर्णों को गिना जाना है (यह आपके स्वयं के आवरण को नहीं लिखने के लिए दंड के रूप में है)।
केवल रैपर के कोड को ही गिनना होगा। यदि उदाहरण के रूप में अन्य फाइलें हैं, तो इन्हें गिनना नहीं है।
- URL शॉर्टर्स या अन्य तरीकों का कोई उपयोग नहीं है जो URL को छोटा बना सकते हैं: चुनौती एक चैटबॉट को गोल्फ करना है, न कि एक URL को गोल्फ करना।
- कोई वेब अनुरोध नहीं, सिवाय उन चैट के और आदेशों का जवाब देने के लिए आवश्यक जानकारी प्राप्त करने के लिए।
- मानक "कमियां" के उपयोग की अनुमति नहीं है।
- यदि कोई कमांड पोस्ट करता है, तो आपको इस प्रारूप के चैट संदेश के साथ जवाब देना होगा
@user response:। इसलिए, अगर मैं कमांड लिखता हूं!!featuredऔर 5 विशेष प्रश्न हैं, तो आपके बॉट को पोस्ट करना चाहिए@ProgramFOX 5। - अगर मैं आपके बॉट का परीक्षण करता हूं, तो मैं इसे अपने चैटबॉट खाते से चलाऊंगा और मैं इसे इस चैट रूम में चलाऊंगा । मैं हमेशा उस कमरे में बॉट्स का परीक्षण करूंगा, इसलिए इनपुट के रूप में रूम आईडी प्रदान करना आवश्यक नहीं है, यह हमेशा 14697 होगा। इस आईडी को इनपुट के रूप में नहीं दिया जाएगा, इसे हार्ड-कोड किया जाना चाहिए।
- यदि कमांड नहीं मिली है, आउटपुट
@user The command [command] does not exist।[command]गैर-मौजूदा आदेश के नाम से प्रतिस्थापित करें । यदि तर्क को कमांड प्रदान की जाती है, तो तर्कों को आउटपुट न करें, केवल कमांड नाम। - यदि किसी आदेश में कई तर्क हैं, तो उन तर्कों को अनदेखा करें जो आवश्यक नहीं हैं।
- यदि किसी कमांड में पर्याप्त तर्क, आउटपुट नहीं है
@user You have not provided enough arguments - सिस्टम रोकता है कि कुछ समय के भीतर डुप्लिकेट संदेश पोस्ट किए जाते हैं। इसलिए, आपके बॉट का परीक्षण करते समय, मैं कभी भी दो कमांड नहीं चलाऊंगा जो समान आउटपुट को क्रमिक रूप से देते हैं (जिसका अर्थ है कि आपको एक प्रणाली लागू करने की आवश्यकता नहीं है जो संदेशों को अलग-अलग बनाता है यदि वे डुप्लिकेट हैं, उदाहरण के लिए एक डॉट जोड़कर)।
- सिस्टम रोकता है कि बहुत सारे संदेश थोड़े समय सीमा के भीतर पोस्ट हो जाते हैं, इसलिए परीक्षण करते समय, मैं बहुत कम समय के भीतर कई कमांड नहीं भेजूंगा, जिसका अर्थ है कि आपके बॉट को इस बात का ध्यान नहीं रखना है (कुछ समय प्रतीक्षा करके पोस्ट करने से पहले, उदाहरण के लिए)।
- यह कोड-गोल्फ है , कम से कम बाइट्स जीतने वाला कार्यक्रम।
शुरू करना
अपने बॉट को लिखने के साथ आरंभ करने के लिए यहां कुछ जानकारी दी गई है। आपको इसका उपयोग नहीं करना है, लेकिन यह एक मार्गदर्शन हो सकता है।
- लॉग इन करने के लिए, पहले एक OpenID प्रदाता में लॉग इन करें। यह हमेशा स्टैक एक्सचेंज ओपनआईडी (
https://openid.stackexchange.com) होगा। लॉगिन फ़ॉर्म पर स्थित हैhttps://openid.stackexchange.com/account/login, और वहां उपयोगकर्ता नाम और पासवर्ड प्रदान करें। - फिर, लॉगिन करें
stackexchange.com। लॉगिन फॉर्म पर स्थित हैhttps://stackexchange.com/users/login। OpenID प्रदाता के रूप में स्टैक एक्सचेंज चुनें। - ऐसा करने के बाद, चैट में लॉग इन करें। उस के लिए लॉगिन फ़ॉर्म में स्थित है
http://stackexchange.com/users/chat-login। OpenID प्रदाता के रूप में स्टैक एक्सचेंज चुनें। - फिर आपको अपना प्राप्त करने की आवश्यकता है
fkey। उसके लिए, एक छिपे हुए इनपुट फ़ील्ड से जाएंhttp://chat.stackexchange.com/chats/join/favoriteऔर प्राप्त करेंfkey। - संदेश पोस्ट करने के लिए
http://chat.stackexchange.com/chats/14697/messages/new, एक अनुरोध भेजें और दो POST पैरामीटर प्रदान करें:textसंदेश पाठ वाला एकfkeyपैरामीटर और एक पैरामीटर जिसमेंfkey। यह देखने के लिए कि कोई नया संदेश कब पोस्ट किया गया है, आप वेबस्केट्स का उपयोग कर सकते हैं (लेकिन ऐसा नहीं है, अगर यह छोटा है तो कुछ और उपयोग करने के लिए स्वतंत्र महसूस करें)। कृपया इस मेटा स्टैक एक्सचेंज का उत्तर देखें :
चैट
(wss://chat.sockets.stackexchange.com/events/<roomnumber>/<somehash>?l=<timethingy>)कमरा आईडी और fkey को पोस्ट करके हैश प्राप्त किया जा सकता है
http://chat.stackexchange.com/ws-authटाइमस्टाइल समय के द्वारा लौटाए गए जौन की कुंजी है
/chats/<roomno>/events।जब संदेश पोस्ट किया जाता है तो ई-मेल आईडी
1।- मौजूदा चैट-रैपर को देखने के लिए उपयोगी है, जैसे कि Doorknob's StackExchange- Chatty और Manishearth's ChatExchange , यह देखने के लिए कि यह वास्तव में कैसे काम करता है।
metafeaturedइसका मतलब मेटा पर पूछे गए सवालों से होगा, लेकिन ... धन्यवाद :-)