कम ज्ञात प्रोग्रामिंग प्रतिमानों में से एक, जो कोड गोल्फिंग के लिए उपयुक्त लगता है, ओवरलैपिंग ओरिएंटेड प्रोग्रामिंग (ओओपी) * है। आंशिक रूप से समान कोड लिखते समय, कई बाइट्स को समान भागों को ओवरलैप करके और किसी तरह से याद करने से बचाया जा सकता है जहां दो मूल लाइनें शुरू होती हैं। आपका काम दो अतिव्यापी कार्यक्रमों या कार्यों को लिखना है compressऔर decompressनिम्नलिखित विनिर्देश के साथ:
* उत्पादन कोड में उपयोग न करें, शायद।
compress
compressकिसी भी सुविधाजनक प्रारूप में दो तार लेता है और उन्हें यथासंभव ओवरलैप करता है। यह sन्यूनतम लंबाई के साथ एक स्ट्रिंग है जैसे कि दोनों इनपुट तार के सबस्ट्रिंग हैं s। इसके अतिरिक्त, कुछ आउटपुट जो दोनों स्ट्रिंग के प्रारंभ और अंत सूचक की पहचान करते हैं, उन्हें लौटा दिया जाता है।
उदाहरण: (सटीक IO- प्रारूप आपके ऊपर है)
compress("abcd", "deab") -> "deabcd" ((2,5),(0,3))
compress("abcd", "bc") -> "abcd" ((0,3),(1,2))
compress("abc", "def") -> "abcdef" ((0,2),(3,5)) or "defabc" ((3,5),(0,2))
decompress
decompressके व्युत्क्रम फ़ंक्शन की गणना करता है compress, जिसे एक स्ट्रिंग और दो स्टार्ट एंड एंड इंडिस दिए जाते हैं (उस प्रारूप में जिसमें वे आपके द्वारा लौटाए जाते हैं compress), दो मूल स्ट्रिंग्स को वापस करते हैं। आपको केवल मान्य इनपुट को संभालने की आवश्यकता है। निम्नलिखित समानता सभी स्ट्रिंग्स के लिए धारण करना चाहिए s1, s2:
(s1, s2) == decompress (compress (s1, s2))
उदाहरण: ( उदाहरणों के विपरीत compress)
decompress "deabcd" ((2,5),(0,3)) -> "abcd" "deab"
decompress "abcd" ((0,3),(1,2)) -> "abcd" "bc"
decompress "abcdef" ((0,2),(3,5)) -> "abc" "def"
or (whichever version your "compress" generates)
decompress "defabc" ((3,5),(0,2)) -> "abc" "def"
स्कोरिंग
आपका स्कोर कॉल करके लौटे स्ट्रिंग का आकार है compress("<code of compress>", "<code of decompress>")। चूंकि यह कोड-गोल्फ कम स्कोर बेहतर है।
उदाहरण:
कोड मान लें के लिए अपने कार्य compressहै c=abcdऔर के लिए कोड decompressहै d=efghi। फिर compress("c=abcd", "d=efghi")पैदावार "c=abcd=efghi"(और सूचकांक, लेकिन स्कोरिंग को प्रभावित नहीं करते) इसलिए स्कोर है length "c=abcd=efghi" = 12।
अतिरिक्त नियम
- इस चुनौती की भावना में, आपका
compressऔर कम से कम एक चरित्र मेंdecompressओवरलैप होना चाहिए । आप एक टिप्पणी जोड़कर इसे तुच्छ रूप से प्राप्त कर सकते हैं, लेकिन ध्यान दें कि ऐसा करने से आपका स्कोर बढ़ जाएगा और अंतर्निहित ओवरलैपिंग कोड का उपयोग करके छोटे समाधान हो सकते हैं। compressऔरdecompressकिसी भी मुद्रण योग्य ASCII वर्णों के साथ-साथ उन सभी वर्णों को संभालने में सक्षम होना चाहिए जिन्हें आपने परिभाषित किया थाcompressऔरdecompress।- सूचकांक शून्य- या एक-अनुक्रमित हो सकते हैं।
- आपका कार्यक्रम या कार्यों वास्तव में नामित किया जाना नहीं है
compressऔरdecompress।