जैसा कि हम सभी जानते हैं, मेटा है बह निकला से शिकायतों के बारे में स्कोरिंग कोड गोल्फ के बीच भाषाओं (हाँ, प्रत्येक शब्द एक अलग लिंक है, और इन बस एक शुरूआत हो सकता है)।
उन लोगों के प्रति बहुत ईर्ष्या के साथ, जो वास्तव में पाइथ डॉक्यूमेंटेशन को देखने के लिए परेशान थे, मैंने सोचा कि एक रचनात्मक चुनौती से थोड़ा अधिक अच्छा होगा, एक वेबसाइट के लिए जो कोड चुनौतियों में माहिर है।
चुनौती सीधी-सादी है। इनपुट के रूप में , हमारे पास भाषा का नाम और बाइट काउंट है । आप उन्हें फंक्शन इनपुट्स के रूप में ले सकते हैं, stdinया आपकी भाषाएं डिफॉल्ट इनपुट मेथड।
आउटपुट के रूप में , हमारे पास एक सही बाइट काउंट है , अर्थात, आपके द्वारा लगाए गए हैंडीकैप के साथ स्कोर। क्रमशः, आउटपुट फ़ंक्शन आउटपुट stdoutया आपकी भाषा डिफ़ॉल्ट आउटपुट विधि होनी चाहिए । आउटपुट पूर्णांकों तक पहुंच जाएगा, क्योंकि हम टाईब्रेकर से प्यार करते हैं।
सबसे बदसूरत, एक साथ हैक किए गए क्वेरी का उपयोग करना ( लिंक - इसे साफ करने के लिए स्वतंत्र महसूस करें), मैंने एक डेटासेट (ज़िप .xslx, .ods और .csv के साथ ज़िप ) बनाने में कामयाबी हासिल की है, जिसमें कोड-गोल्फ सवालों के सभी उत्तरों का एक स्नैपशॉट है। । आप इस फ़ाइल का उपयोग कर सकते हैं (और यह अपने कार्यक्रम के लिए उपलब्ध होने की मान, जैसे, यह एक ही फ़ोल्डर में है) या किसी अन्य पारंपरिक प्रारूप करने के लिए इस फ़ाइल को परिवर्तित ( , , आदि - लेकिन यह केवल मूल डेटा हो सकता है!)। नाम पसंद के विस्तार के साथ रहना चाहिए ।.xls.mat.savQueryResults.extext
अब बारीकियों के लिए। प्रत्येक भाषा के लिए, एक बॉयलरप्लेट Bऔर वर्बोसिटी Vपैरामीटर हैं। साथ में, उन्हें भाषा का एक रैखिक मॉडल बनाने के लिए उपयोग किया जा सकता है। आज्ञा देना nवास्तविक संख्या बाइट्स की है, और cसही अंक हो। एक सरल मॉडल का उपयोग करके n=Vc+B, हम सही स्कोर के लिए प्राप्त करते हैं:
n-B
c = ---
V
काफी आसान है, है ना? अब, निर्धारण के लिए Vऔर B। जैसा कि आप उम्मीद कर सकते हैं, हम कुछ रेखीय प्रतिगमन करने जा रहे हैं, या अधिक सटीक, कम से कम वर्ग भारित रैखिक प्रतिगमन। मैं उस पर विवरण की व्याख्या नहीं करने जा रहा हूं - यदि आप सुनिश्चित नहीं हैं कि ऐसा कैसे करें, विकिपीडिया आपका मित्र है , या यदि आप भाग्यशाली हैं, तो आपकी भाषा का प्रलेखन।
डेटा इस प्रकार होगा। प्रत्येक डेटा बिंदु बाइट काउंट nऔर प्रश्न का औसत बायटेकाउंट होगा c। वोटों का हिसाब रखने के लिए, अंकों को वेट किया जाएगा, उनके वोटों की संख्या के साथ एक (0 वोटों का हिसाब), चलिए उसी को बताते हैं v। नकारात्मक वोटों के जवाब को छोड़ दिया जाना चाहिए। सरल शब्दों में, 1 वोट के साथ एक उत्तर को 0 वोट के साथ दो उत्तरों के समान होना चाहिए।
यह डेटा तब n=Vc+Bभारित रैखिक प्रतिगमन का उपयोग करके पूर्वोक्त मॉडल में फिट किया जाता है ।
उदाहरण के लिए , किसी दिए गए भाषा के लिए डेटा दिया
n1=20, c1=8.2, v1=1
n2=25, c2=10.3, v2=2
n3=15, c3=5.7, v3=5
अब, हम संबंधित मेट्रिसेस और वैक्टर A, yऔर W, वेक्टर में हमारे मापदंडों के साथ रचना करते हैं
[1 c1] [n1] [1 0 0] x=[B]
A=[1 c2] y=[n2] W=[0 2 0], [V]
[1 c3] [n3] [0 0 5]
हम मैट्रिक्स समीकरण को हल करते हैं ( 'स्थानान्तरण को दर्शाते हुए)
A'WAx=A'Wy
के लिए x(और इसके परिणामस्वरूप, हम अपने मिलता है Bऔर Vपैरामीटर)।
जब आपका खुद का भाषा नाम और बायटेकाउंट दिया जाता है, तो आपका स्कोर आपके प्रोग्राम का आउटपुट होगा। तो हाँ, इस बार भी जावा और सी ++ उपयोगकर्ता जीत सकते हैं!
चेतावनी: क्वेरी 'कूल' हेडर फ़ॉर्मेटिंग का उपयोग करने वाले लोगों और कोड-गोल्फ के रूप में अपने कोड-चैलेंज प्रश्नों को टैग करने वाले लोगों के कारण बहुत सी अमान्य पंक्तियों के साथ एक डेटासेट बनाती है । मेरे द्वारा प्रदान किए गए डाउनलोड में अधिकांश आउटलेर्स हटा दिए गए हैं। क्वेरी के साथ दिए गए CSV का उपयोग न करें।
हैप्पी कोडिंग!
C++ <s>6 bytes</s>। इसके अलावा, मैंने आज से पहले कभी कोई टी-एसक्यूएल नहीं किया और मैं पहले से ही खुद से प्रभावित हूं कि मैं बायटेकाउंट निकालने में कामयाब रहा।
