रेप्रेज़ेंटर


Exercism समुदाय के सामने एक समस्या यह है कि कई अलग-अलग अभ्यासों के कई हल देने वाले कई लोगों को अर्थपूर्ण फीडबैक कैसे दिया जाए। इस संभावित रूप से विशाल काम के दायरे को कम करने में मदद करने के लिए, हलों को सामान्यीकृत करके "रिप्रेजेंटेशन" बनाए जाते हैं। उदाहरण के लिए, Ruby ट्रैक पर TwoFer अभ्यास के सबसे हाल के 500 सबमिशन में से लगभग 380 अलग माने जाएँगे (अगर आप कोड फॉर्मैटिंग और कमेंट जैसी मामूली चीज़ों के लिए सामान्यीकरण करें)। अगर आप उन्हें और आगे सामान्यीकृत करें (जैसे फंक्शन या वेरिएबल के नामों को सामान्यीकृत करके), तो यह संख्या और छोटी हो जाती है, इसलिए शायद केवल 250 अलग तरीके बचें। अगर Exercism समुदाय उन 250 तरीकों पर कुछ फीडबैक दे सके, तो उम्मीद है कि TwoFer के लिए आने वाले सभी सबमिशन में से ~99% के लिए हमारे पास मान्य फीडबैक तैयार होगा। कॉन्सेप्ट अभ्यासों के साथ हल का दायरा और भी छोटा होगा, क्योंकि कॉन्सेप्ट अभ्यास जानबूझकर एक खास तरीके से हल करने के लिए बनाए जाएँगे।

एक रिप्रेजेंटर थोड़ा सा कोड होता है जिसकी एक ही ज़िम्मेदारी होती है: किसी हल को लेकर उसका सामान्यीकृत रिप्रेजेंटेशन लौटाना।

एक रिप्रेजेंटेशन किसी हल का उसके सार तक निकाला गया रूप होता है, जिसमें नाम, कमेंट, स्पेसिंग आदि सामान्यीकृत होते हैं, लेकिन फिर भी अपनाए गए तरीके की अनोखी पहचान बनी रहती है। एक ही अभ्यास को हल करने के दो अलग तरीकों का रिप्रेजेंटेशन समान नहीं होना चाहिए।

सबसे सरल रिप्रेजेंटर वह होता है जो केवल हल का सोर्स कोड लौटाता है। हालाँकि, हमारा लक्ष्य ऐसे हलों के लिए एक ही रिप्रेजेंटेशन रखना है जो केवल गैर-ज़रूरी विवरणों में अलग हों, इसलिए रिप्रेजेंटर को एक या अधिक सामान्यीकरण लागू करने चाहिए।

एक बार जब किसी हल का सामान्यीकृत रिप्रेजेंटेशन तैयार हो जाता है, तो सत्यापित मेंटरों की एक टीम उस हल को देखेगी और ज़रूरत पड़ने पर उस पर टिप्पणी करेगी। ये टिप्पणियाँ फिर अपने-आप उसी रिप्रेजेंटेशन वाले हर नए हल को सबमिट कर दी जाएँगी। मिलते-जुलते रिप्रेजेंटेशन वाले पुराने हलों के लिए एक नोटिफिकेशन भेजा जाएगा।

रिप्रेजेंटर में योगदान देना

हर भाषा का अपना रिप्रेजेंटर होता है, जो उसी भाषा में लिखा जाता है। वेबसाइट रिप्रेजेंटर और छात्रों के सबमिशन के बीच समन्वयक का काम करती है।

हर रिप्रेजेंटर Exercism GitHub संगठन में <track_slug>-representer नाम की रिपॉज़िटरी में रहता है (जैसे exercism/ruby-representer)। मौजूदा रिप्रेजेंटर आप यहाँ देख सकते हैं।

अगर आप किसी मौजूदा रिप्रेजेंटर की मदद में शामिल होना चाहते हैं, तो कृपया उसकी रिपॉज़िटरी में एक इशू खोलकर पूछिए कि कहीं आप मदद कर सकते हैं या नहीं। अगर आप ऐसी भाषा के लिए रिप्रेजेंटर बनाना चाहते हैं जिसके पास अभी एक भी नहीं है, तो कृपया रिप्रेजेंटर बनाने के निर्देशों का पालन कीजिए।

रिप्रेजेंटर बनाने के बारे में और जानने के लिए आप इन दस्तावेज़ों का उपयोग कर सकते हैं: