कम ज्ञात प्रोग्रामिंग प्रतिमानों में से एक, जो कोड गोल्फिंग के लिए उपयुक्त लगता है, ओवरलैपिंग ओरिएंटेड प्रोग्रामिंग (ओओपी) * है। आंशिक रूप से समान कोड लिखते समय, कई बाइट्स को समान भागों को ओवरलैप करके और किसी तरह से याद करने से बचाया जा सकता है जहां दो मूल लाइनें शुरू होती हैं। आपका काम दो अतिव्यापी कार्यक्रमों या कार्यों को लिखना है 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
।