चुनौती : एक एकल स्क्रिप्ट फ़ाइल लिखें, foo.cmd
जिसे वनीला विंडोज cmd.exe
प्रॉम्प्ट (पावरस्हेल नहीं, प्रशासक मोड में नहीं) से प्राप्त किया जा सकता है , मनमाने ढंग से विंडोज-विशिष्ट कोड निष्पादित करने के लिए ...
> .\foo.cmd
Hello Windows!
... लेकिन यह भी एक विशिष्ट POSIX अनुरूप (लिनक्स / OSX) से अनछुए शैल लागू किया जा शीघ्र ( bash
, tcsh
, या zsh
), मनमाने ढंग से POSIX-विशिष्ट कोड निष्पादित करने के लिए:
$ chmod a+x foo.cmd
$ ./foo.cmd
Hello POSIX!
... तृतीय-पक्ष दुभाषियों / उपकरणों की स्थापना या निर्माण की आवश्यकता के बिना।
मुझे पता है कि यह संभव है, लेकिन cruft के साथ (यानी विंडोज पर, कचरा / त्रुटि-संदेश की एक या दो पंक्तियाँ "हैलो विंडोज!" से पहले stderr या stdout में प्रिंट की जाती हैं)।
जीतने की कसौटी न्यूनतम (पहले) cruft लाइनों की संख्या है, और (दूसरे) cruft वर्णों की संख्या।
Cruft को किसी भी कंसोल आउटपुट (stdout या stderr) के रूप में परिभाषित किया जा सकता है जो कि (मनमाना) पेलोड कोड द्वारा निर्मित नहीं है। ब्लैंक लाइनों को लाइन काउंट में गिना जाता है। कैरेक्टर काउंट में न्यूलाइन्स की गिनती नहीं की जाती है। Cruft स्कोर दोनों प्लेटफार्मों भर में अभिव्यक्त किया जाना चाहिए। चलो इस तरह के तंत्र की अवहेलना करते हैं cls
जो क्रुफ्ट को दूर करते हैं लेकिन पिछले टर्मिनल आउटपुट को खाली करने की लागत पर भी। यदि विंडोज़ आपके आदेशों को इको कर देता है क्योंकि आपने @echo off
अभी तक चालू नहीं किया है, तो चलिए उन पात्रों को छोड़ दें जिन्हें यह वर्तमान निर्देशिका और शीघ्रता को प्रिंट करने में खर्च करता है।
एक माध्यमिक मानदंड अंदर की समाधान की सादगी / लालित्य है foo.cmd
: यदि "अवसंरचना" को किसी भी चरित्र के रूप में परिभाषित किया गया है जो सीधे मनमाने ढंग से पेलोड कोड में शामिल नहीं है, तो पहले लाइनों की संख्या कम से कम करें जिसमें अवसंरचना वर्ण शामिल हैं, और बुनियादी ढांचे की कुल संख्या दूसरी है। पात्र।
यदि CRLF लाइन-एंडिंग वाली फ़ाइल के बावजूद POSIX भाग काम करेगा तो अतिरिक्त यश! (यह निश्चित नहीं है कि अंतिम भाग भी संभव है।)
मेरा मौजूदा समाधान, जिसे मैं यहां पोस्ट करूंगा, जब दूसरों के पास मौका होगा, तो इन्फ्रास्ट्रक्चर कोड की 6 पंक्तियों का उपयोग करता है (नई वर्णमाला को छोड़कर 52 वर्ण)। यह क्रुफ़्ट की 5 पंक्तियों का उत्पादन करता है, जिनमें से दो रिक्त हैं, जिनमें से सभी विंडोज पर होते हैं (30 वर्णों को छोड़कर नई पंक्ति और वर्तमान निर्देशिका / शीघ्र स्ट्रिंग को छोड़कर जो उन दो पंक्तियों में दिखाई देती है)।