अंतरिक्ष युद्ध बनाम टैब समाप्त करें
इसलिए, इस बात पर बहुत बहस हो गई है कि क्या इंडेंट / फॉर्मेट कोड को टैब या स्पेस का उपयोग करना है। क्या आप प्रारूपण के अविश्वसनीय रूप से पागल अनोखे तरीके से जाकर विश्वविद्यालय को विवाद को सुलझाने में मदद कर सकते हैं ।
आपका काम एक पूर्ण कार्यक्रम या फ़ंक्शन लिखना है जो सभी टैब को चार स्थानों में विस्तारित करता है। और फिर "/ (n - दो सितारों यहाँ) /" के साथ n अग्रणी स्थानों की एक रन बदलता है। आप किसी भी उचित प्रारूप में कई लाइनों पर इनपुट प्राप्त करेंगे (प्रत्येक नई पंक्ति के लिए स्ट्रिंग के एकल स्ट्रिंग सरणी। स्तंभ पूर्व सरणी आदि)
नमूना इनपुट बेशर्मी से चुराया । ध्यान दें कि चूंकि टैब SE पर चार स्थानों पर स्वचालित रूप से विस्तारित हो जाता है इसलिए मैं इसे "^" वर्ण के रूप में प्रस्तुत करता हूं, लेकिन आपको टैब (कोडपॉइंट 0x09) को भी संभालना होगा। सभी "^" वर्ण एक सारणीकरण का प्रतिनिधित्व करते हैं।
Calculate the value 256 and test if it's zero
If the interpreter errors on overflow this is where it'll happen
++++++++[>++++++++<-]>[<++++>-]
+<[>-<
Not zero so multiply by 256 again to get 65536
[>++++<-]>[<++++++++>-]<[>++++++++<-]
+>[>
# Print "32"
++++++++++[>+++++<-]>+.-.[-]<
<[-]<->] <[>>
# Print "16"
+++++++[>+++++++<-]>.+++++.[-]<
<<-]] >[>
# Print "8"
++++++++[>+++++++<-]>.[-]<
<-]<
# Print " bit cells\n"
+++++++++++[>+++>+++++++++>+++++++++>+<<<<-]>-.>-.+++++++.+++++++++++.<.
>>.++.+++++++..<-.>>-
Clean up used cells.
[[-]<]l
^this is preceded by a tab
^^two tabs
^^^three tabs etcetera!
नमूना उत्पादन
Calculate the value 256 and test if it's zero
If the interpreter errors on overflow this is where it'll happen
++++++++[>++++++++<-]>[<++++>-]
+<[>-<
/**/Not zero so multiply by 256 again to get 65536
/**/[>++++<-]>[<++++++++>-]<[>++++++++<-]
/**/+>[>
/******/# Print "32"
/******/++++++++++[>+++++<-]>+.-.[-]<
/**/<[-]<->] <[>>
/******/# Print "16"
/******/+++++++[>+++++++<-]>.+++++.[-]<
<<-]] >[>
/**/# Print "8"
/**/++++++++[>+++++++<-]>.[-]<
<-]<
# Print " bit cells\n"
+++++++++++[>+++>+++++++++>+++++++++>+<<<<-]>-.>-.+++++++.+++++++++++.<.
>>.++.+++++++..<-.>>-
Clean up used cells.
[[-]<]l
/**/this is preceded by a tab
/******/two tabs
/**********/three tabs etcetera!
क्योंकि विश्वविद्यालय को Vim और Emacs दोनों को डाउनलोड करने के लिए स्थान की आवश्यकता है, इसलिए आपको अपने कोड के लिए बहुत कम संग्रहण की अनुमति है। इसलिए यह कोड-गोल्फ है और सबसे छोटा कोड जीतता है। आप मान सकते हैं कि इनपुट अच्छी तरह से बना है और चार स्थानों (टैब के प्रतिस्थापन के बाद) से कम लाइनों के साथ अपरिभाषित व्यवहार हो सकता है।
अस्वीकरण
यह "उत्कृष्ट" प्रारूपण रणनीति जियोबिट्स के सौजन्य से आई, और उसकी अनुमति के साथ पुन: प्रस्तुत किया गया है। इस चुनौती के उत्पादन के दौरान किसी भी प्रोग्रामर को नुकसान नहीं पहुंचाया गया।
/*
, जिन्हें "अच्छी तरह से गठित इनपुट" नहीं माना जा सकता है? C ++ स्रोत फ़ाइल एक बेहतर परीक्षा होती, क्योंकि इसकी बहु-भाषी टिप्पणी /* */
संभवत: कुछ उत्तरों को तोड़ देती है, जो प्रमुख रिक्त स्थान के पहले और अंतिम को एक के साथ बदल देते हैं /
, और फिर रिक्त स्थान को भरने के लिए आगे बढ़ते हैं *
।
/* */
सी ++ कोड की कल्पना करें , लेकिन इस बार लाइन की शुरुआत में। आपकी कल्पना के अनुसार इसे वैसे ही छोड़ देना चाहिए। यहाँ जाल है, और पहले से ही गलत उत्तरों को देखा गया है, जैसे कि कहना है कि एक रेक्सक्स /\** /
उन रिक्त स्थान को // के बीच भरता है जिसका उपयोग तारांकन के साथ होता है /***/
। मैंने इस रूपांतरण को भी देखा है /*//*/
। मुझे लगता है कि दोनों गलत हैं।