सफल कोड गोल्फ प्रस्तुतियाँ, स्वभाव से, सभी जगह पागल प्रतीकों से भरी हैं। उनके प्रस्तुतिकरण को समझने में आसान बनाने के लिए, कई कोड-गोल्फर अपने कोड की व्याख्या शामिल करना चुनते हैं। उनके स्पष्टीकरण में, कोड की रेखा एक ऊर्ध्वाधर विस्फोटित आरेख में बदल जाती है।
उदाहरण के लिए, यदि यह मेरा कोड था:
1_'[3:~2@+]`
मेरे द्वारा बनाए जा सकने वाले कई संभावित आरेखों में से एक इस तरह दिखाई देगा:
1
_'
[ ]
[3: ]
[ ~ ]
[ 2@ ]
[ +]
`
लक्ष्य
इस चुनौती में, आप एक स्पष्टीकरण ऑटो-स्वरूपण उपकरण लिखेंगे जो कोड की एक पंक्ति लेता है और एक आरेख बनाता है जिसमें व्याख्यात्मक पाठ आसानी से जोड़ा जा सकता है।
इसे और अधिक उपयोगी चुनौती बनाने के लिए, उपयोगकर्ता एक प्रारूपण स्ट्रिंग प्रदान करके, प्रत्येक पंक्ति की सामग्री को निर्दिष्ट करने में सक्षम होगा। स्वरूपण स्ट्रिंग एक दूसरी पंक्ति होगी, जिसमें केवल अक्षर होंगे A-Za-z
, जो कि प्रोग्राम की समान लंबाई है। पत्र उस क्रम को दिखाते हैं जिसमें कार्यक्रम के पात्रों को स्पष्टीकरण में मुद्रित किया जाना चाहिए।
यहाँ I / O का उदाहरण बिना किसी ब्रैकेट के स्वरूपण के बिना दिया गया है :
123423
AabcBC
1
2
3
2
3
4
कोष्ठक
यदि कार्यक्रम में एक से अधिक वर्णों का समान प्राथमिकता स्तर है, तो वर्णों का वह समूह कोड के एकल खंड (यदि वे एक समूह बनाते हैं) या कोष्ठक का एक समूह (यदि उनके बीच में अन्य वर्ण हों) के रूप में कार्य करता है। सामान्य नियम सरल हैं:
वर्ण आरेख की एक पंक्ति में दिखाई नहीं देते हैं जब तक कि अधिक प्राथमिकता के अन्य सभी वर्ण पहले से ही रेखा के ऊपर आरेख में दिखाई नहीं देते हैं।
समान प्राथमिकता के वर्ण हमेशा एक ही तर्ज पर मुद्रित होते हैं। यदि एक निश्चित वर्ण एक रेखा पर दिखाई देता है, तो समान प्राथमिकता के अन्य सभी वर्ण रेखा पर दिखाई देते हैं।
समान प्राथमिकता वाले वर्णों का एक सेट प्रत्येक पंक्ति पर तब तक प्रदर्शित होता रहता है जब तक कि उसके द्वारा संलग्न अन्य सभी अक्षर कम से कम एक बार प्रकट न हो जाएं। यह "ब्रैकेट-जैसे" निर्माणों के लिए अनुमति देता है। यदि
bceab
प्राथमिकताएं हैं, तोb
वर्ण दूसरी पंक्ति में दिखाई देंगे (वे दूसरी-सर्वोच्च प्राथमिकता हैं) और तब तक दिखाई देते रहेंगे जब तक कि सभीcea
वर्ण प्रकट नहीं हो जाते। यदि प्राथमिकता स्ट्रिंग हैabcadeafga
, तो सभी कोbcdefg
इसके भीतर समाहित माना जाता है, सभी 4a
s तब तक दिखाई देते रहेंगे जब तक किg
यह दिखाई न दे।
अधिक स्वरूपण आवश्यकताओं
आउटपुट की सभी लाइनें समान लंबाई (इनपुट लाइनों की लंबाई) होनी चाहिए, जो आवश्यक के रूप में रिक्त स्थान के साथ गद्देदार हो। इनपुट प्रोग्राम लाइन में स्थान हो सकते हैं, हालाँकि उन स्थानों को भी प्राथमिकता पत्र दिया जाएगा। आउटपुट / इनपुट पर अनुगामी न्यूलाइन्स वैकल्पिक हैं।
स्कोरिंग
यह कोड गोल्फ है, सबसे कम बाइट्स जीतता है।
उदाहरण
यहां अधिक जटिल प्रारूपण के साथ कोड के एक टुकड़े का एक उदाहरण दिया गया है।
1_'[3:~2@+]`
abbcddeffgch
1 #highest priority is denoted by the lowercase letter a
_' #priority b
[ ] #all characters with priority c
[3: ] #priority d, but priority c still printed because it encloses more
[ ~ ] #priority e
[ 2@ ] #priority f
[ +] #priority g, last line of c because all enclosed characters have appeared
` #priority h
पर्ल में एक उदाहरण:
$_=<>;s/[^aeiou\W]/$&o$&/gi;print
aaaaaabbccccccccccbdddddbbbbeeeee
$_=<>;
s/ / /gi;
s/[^aeiou\W]/ /gi;
s/ /$&o$&/gi;
print
मार्टिन बुर्टनर के सौजन्य से CJam में कुछ उदाहरण दिए गए हैं:
l~2*{_2%{3*)}{2/}?_p_(}g;
aabbcdddefffeeggeehhiiccj
l~
2*
{ }g
{_2% }g
{ { }{ }? }g
{ {3*)}{ }? }g
{ { }{2/}? }g
{ _p }g
{ _(}g
;
q{_eu'[,66>"EIOU"-#)g{'o1$}*}/
abcccddddddeeeeeeefgghiijjhhbb
q
{ }/
{_eu }/
{ '[,66> }/
{ "EIOU"- }/
{ # }/
{ )g }/
{ { }*}/
{ {'o }*}/
{ { 1$}*}/
यहाँ आपके साथ खिलवाड़ करने का एक पागल उदाहरण है:
1_'[3:~2@+]`
azTABACBDCAT
[ : ]
[3: 2 ]
[3:~2 +]
[ :~ @+]
' `
1
_
जब ब्रैकेट ओवरलैप होता है तो क्या होता है, इसका अधिक स्पष्ट उदाहरण यहां दिया गया है abab
। (आम तौर पर, यह वह तरीका नहीं है जिससे आप अपने विवरण को प्रारूपित करना चुनेंगे।)
aabbccddaaeebb
aabbccddaaeebb
aa aa
aabb aa bb
aabbcc aa bb
aabb ddaa bb
bb eebb #"aa" no longer appears because all of "bbccdd" have already appeared.
oNo
TIOn
में प्रतिस्थापित किया जा सकता है ।