हर कोई जानता है कि रन-लेंथ एन्कोडिंग क्या है। यह पहले से ही कई कोड-गोल्फ चुनौतियों का विषय रहा है। हम एक निश्चित बदलाव को देख रहे हैं।
उदाहरण
Normal: 11222222222222222222233333111111111112333322
Run-length: 112(19)3(5)1(11)2333322
कोष्ठक में संख्या पिछले प्रतीक के समय की संख्या को निर्दिष्ट करती है। उदाहरण में, केवल 5 या अधिक वर्णों के रन एन्कोड किए गए थे। ऐसा इसलिए है क्योंकि 4 या उससे कम के रन एन्कोडिंग चरित्र गणना में सुधार नहीं करते हैं।
चुनौती
एक फ़ंक्शन / प्रोग्राम लिखें जो रन-लंबाई एन्कोडिंग के इस भिन्नता को लागू करता है, लेकिन दो प्रतीकों के रन को भी एन्कोड कर सकता है। दो प्रतीकों के रन को कोष्ठक में भी संलग्न किया जाना चाहिए। एक समूह कोष्ठकों में भी संलग्न किया जाएगा। आपके प्रोग्राम को एक स्ट्रिंग को इनपुट के रूप में स्वीकार करना चाहिए, और संशोधित स्ट्रिंग को आउटपुट में बदलना चाहिए जो स्ट्रिंग को छोटा करता है।
उदाहरण
Normal: 111244411144411144411167676767222222277777222222277777123123123123
Double run-length: 1112((444111)(3))67676767((2(7)7(5))(2))123123123123
टिप्पणियाँ
111
एन्कोडेड नहीं था क्योंकि इसे एन्कोडिंग (1(3)
) छोटा नहीं है।- स्ट्रिंग
444111
3 बार होती है इसलिए यह एन्कोडेड है। 676767
((67)(4))
पहले की तुलना में लंबा होने के कारण एन्कोड नहीं किया गया था ।222222277777222222277777
के रूप में एन्कोड नहीं किया गया था((222222277777)(2))
। क्यों? क्योंकि222222277777
खुद को कम किया जा सकता है2(7)7(5)
।123123123123
एन्कोडेड नहीं है क्योंकि आपके प्रोग्राम को तीन नहीं, बल्कि दो प्रतीकों के रनों को संभालना है।
ये है कोड गोल्फइतना कम कोड जीतता है। टाई-ब्रेकर जल्दी प्रस्तुत करना है।
अगर मैं कुछ भी याद किया, या आप कुछ भी अनिश्चित हैं तो कृपया मुझे टिप्पणियों में सूचित करें।
441444144414
-> ((4414)(3))
?
4414
तकनीकी रूप से 4 की एक श्रृंखला है। मेरा शब्दांकन सिर्फ बुरा है।
111111111
रूप में एन्कोड किया जा सकता है (1)(9)
?
67
एस हैं।