आपके बॉस ने हाल ही में अंग्रेजी नामक इस दिलचस्प प्रोग्रामिंग भाषा को सीखा है । उसके पास यह "क्रांतिकारी" विचार है, वह आपके साथ कोड उत्पादन दरों को दोगुना करना चाहता है! चूंकि वह टेक सेवी नहीं है, इसलिए वह चाहता है कि आप इसके लिए एक कंपाइलर लिखें ताकि वह भी कोड कर सके!
अब, आप एक दुष्ट आलसी प्रोग्रामर हैं और स्पष्ट रूप से इस हास्यास्पद जटिल भाषा को संकलित करने के लिए एक कार्यक्रम नहीं लिखेंगे। इसके बजाय, आप यह सुनिश्चित करने जा रहे हैं कि आपके बॉस के कोड में हमेशा कोई त्रुटि है, जिससे वह कभी भी वास्तविक संकलन में नहीं जाता है और कोडिंग के बजाय व्याकरण की त्रुटियों को ठीक करता है।
चुनौती एक प्रोग्राम लिखना है जिसे टर्मिनल से चलाया जा सकता है, और एक तर्क के रूप में एक फ़ाइल पथ स्वीकार करता है। कार्यक्रम के लिए है:
- एक टाइपो शुरू करके फ़ाइल इनपुट को संशोधित करें।
- आपके द्वारा शुरू किए गए टाइपो का सामना करने के कारण संकलन विफल करने का नाटक करें।
- एक ही फ़ाइल की प्रतियों पर प्रोग्राम चलाने से एक पंक्ति में दो बार एक ही टाइपो का परिचय नहीं होना चाहिए।
चुनौती का वर्णन करने के लिए, इस फाइल पर अपना प्रोग्राम चलाएं:
Take an array as input.
Sort the array.
Output the array.
की तर्ज पर कुछ आउटपुट करना चाहिए
Error on line 1:
'Take an arqay as input.'
^
arqay is not a valid identifier.
और जिस फाइल को आपने प्रोग्राम को संकलित करने के लिए कहा था, उसे अब देखना चाहिए:
Take an arqay as input.
Sort the array.
Output the array.
कार्यक्रम की ऐनक पर कुछ और विवरण इस प्रकार हैं:
आपके कार्यक्रम को यह मानने की अनुमति है कि कार्यक्रम में किसी भी चरित्र को अलग यादृच्छिक चरित्र के लिए स्वैप करने से एक व्याकरण त्रुटि हो जाएगी। आपके प्रोग्राम को आपके बॉस कोड में त्रुटियाँ पैदा करने के लिए गैर वर्णमाला वर्णों का उपयोग नहीं करना चाहिए। आपका बॉस कभी भी नंबर या प्रतीक का उपयोग नहीं करेगा, और उसे पता चलेगा कि कुछ गड़बड़ है। आपके कार्यक्रम को केवल आपके बॉस के कार्यक्रम में शब्दों के लिए त्रुटियों का परिचय देना चाहिए। वाक्यों, या विराम चिह्नों में रिक्त स्थान न बदलें। आपके प्रोग्राम को आपके बॉस द्वारा संकलित किए गए प्रोग्राम के मामले में परिवर्तन नहीं करना चाहिए, जिसका अर्थ है कि त्रुटियां arQayअमान्य हैं। यह होने के takeबजाय Take, या के Arrayबजाय त्रुटियों को रोकता है array। आपके प्रोग्राम को पहले यह बताते हुए त्रुटि का उत्पादन करना चाहिए कि त्रुटि किस रेखा पर है:
Error on line <insert line number here>:
इसके बाद 'प्रतीकों के अंदर त्रुटि के साथ लाइन का प्रिंट आउट लेना चाहिए । अगली पंक्ति में इसे त्रुटि के साथ शब्द के^ नीचे एक प्रतीक रखना चाहिए , और अंत में इसमें त्रुटि का वर्णन करने वाला कुछ पाठ होना चाहिए (यह हिस्सा आपके ऊपर है, आप कह सकते हैं कि जब तक आप चाहते हैं कि यह एक त्रुटि है)।
आप मान सकते हैं कि इनपुट फ़ाइल मौजूद है और यह खाली नहीं है। आप यह भी मान सकते हैं कि इनपुट फ़ाइल में एक जोड़ने से पहले कोई व्याकरण संबंधी त्रुटियाँ नहीं हैं।
बोनस:
-60 बाइट्स यदि आपके कोड की त्रुटियों का परिचय पूरी तरह से यादृच्छिक नहीं है, लेकिन इस प्रश्न में टाइपो आधारित है ।
कम से कम 5 विभिन्न त्रुटि संदेशों के लिए -60 बाइट्स, यादृच्छिक रूप से बारी-बारी से।
-60 बाइट्स यदि आपके प्रोग्राम में 100 में से 1 मौका है या आपके बॉस को कुछ डिमोटिवेशनल मैसेज आउटपुट करने के लिए कम है।
EDIT: संदेशों की बाइट गिनती आपके स्कोर की ओर नहीं होती है। (इस अच्छे विचार के लिए मार्टिन ब्यूटनर का धन्यवाद)
यह कोड-गोल्फ, सबसे छोटी बाइट गिनती जीत है। कृपया त्रुटि संदेश सामग्री को गोल्फ न करें, यदि आप त्रुटि संदेशों को नहीं समझ सकते हैं, तो आपका बॉस खुश नहीं होगा, और आपसे उनके लिए उन्हें ठीक करने के लिए कहेगा।