ऐलिस एक कंपनी में इंटर्न है जो क्लाइंट-साइड और सर्वर-साइड विकास दोनों के लिए एक प्राथमिक भाषा के रूप में ब्रेनफक का उपयोग करता है। ऐलिस ने सिर्फ अपना पहला कोड लिखा है और वह थोड़ा घबरा गई है क्योंकि वह अपने पहले कोड की समीक्षा के लिए तैयार हो रही है।
ऐलिस अपने कोड को अच्छी तरह से स्वरूपित करना और अच्छी दिखना चाहती है, लेकिन उसके पास 328 पृष्ठों की कंपनी कोड स्टाइल गाइड पढ़ने का समय नहीं है, इसलिए उसने इसे एक आदर्श वर्ग के रूप में प्रारूपित करने का फैसला किया । काश, कोड की लंबाई एक वर्ग बनाने के लिए अपर्याप्त हो सकती है, इसलिए उसने बीच में एक आयताकार अंतर छोड़ने का फैसला किया । अंतराल पूरी तरह से केंद्रित होना चाहिए और जितना संभव हो सके वर्ग के करीब होना चाहिए ।
उदाहरण
++++++ +++++ +++++ +++++ +++++ +++++
++++++ +++++ +++++ + ++ ++ ++ +++++
++++++ ++ ++ + + + ++ + +
++++++ +++++ +++++ +++++ ++ ++ +++++
++++++ +++++ +++++ +++++ +++++ +++++
Perfect OK Acceptable Unacceptable No way! Nope.
ऐलिस की मदद करने के लिए एक कार्यक्रम या एक समारोह लिखें। ऐलिस कोड को एक इनपुट स्ट्रिंग के रूप में देखते हुए, आउटपुट ठीक से स्वरूपित कोड के रूप में यदि संभव हो तो नीचे वर्णित है। यदि स्वरूपण असंभव है, तो आउटपुट इमोजी रोता है :~(
।
यह कोड-गोल्फ है इसलिए उत्तर बाइट्स में कम बाइट्स के साथ गोल किए जाते हैं।
प्रतिबन्ध
- आपके प्रोग्राम या फ़ंक्शन को इनपुट के रूप में एक स्ट्रिंग लेना चाहिए और पाठ की एक या अधिक पंक्तियों को आउटपुट करना चाहिए (या यदि आप किसी फ़ंक्शन को लागू करते हैं, तो बहु-पंक्ति स्ट्रिंग या स्ट्रिंग के सरणी लौटाएं)।
- इनपुट स्ट्रिंग में व्हॉट्सएप सहित कोई भी ASCII वर्ण हो सकते हैं।
- इनपुट में सभी व्हाट्सएप को नजरअंदाज करना चाहिए। उन्हें कोड की लंबाई की गणना नहीं करनी चाहिए और उनका उपयोग आउटपुट में नहीं किया जाना चाहिए।
- इनपुट स्ट्रिंग में कम से कम एक गैर-व्हाट्सएप चरित्र होता है।
- प्रारूपित कोड में उसी गैर-व्हाट्सएप वर्ण के समान होना चाहिए जैसा इनपुट कोड में होता है।
- स्वरूपित कोड एक पूर्ण वर्ग होना चाहिए, अर्थात सभी लाइनों की लंबाई समान होनी चाहिए, और लाइनों की संख्या लाइनों की लंबाई के बराबर होनी चाहिए।
- प्रारूपित कोड में बीच में अंतराल हो सकता है।
- अंतराल में केवल अंतरिक्ष वर्ण (ASCII कोड 32) का उपयोग किया जा सकता है।
- गैप (यदि मौजूद है) आयताकार होना चाहिए।
- स्वरूपित कोड की प्रत्येक पंक्ति में कम से कम एक गैर-व्हाट्सएप चरित्र होना चाहिए, अर्थात गैप की चौड़ाई वर्ग की चौड़ाई से कम होनी चाहिए (अंतर 5x1 5x5 वर्ग के लिए अस्वीकार्य है)।
- गैप क्षैतिज होना चाहिए, यानी गैप की चौड़ाई गैप ऊंचाई से अधिक या बराबर होनी चाहिए।
- गैप पूरी तरह से केंद्रित होना चाहिए।
- नतीजतन अंतराल चौड़ाई और ऊंचाई समता वर्ग चौड़ाई समता के समान होनी चाहिए (उदाहरण के लिए 5x5 वर्ग अंतराल 1x1, 3x1 या 3x3 हो सकती है)।
- यदि संभव हो तो, आउटपुट स्क्वायर बिना किसी अंतराल के।
- कई समाधानों के मामले में, वर्ग के निकटतम अंतर वाले एक को चुनें, यानी गैप चौड़ाई और गैप ऊंचाई के बीच अंतर न्यूनतम है (उदाहरण के लिए: गैप 10x10 8x6 से अधिक बेहतर है, और 8x6 6x2 से अधिक बेहतर है)।
- यदि अभी भी एक टाई है, तो न्यूनतम अंतराल क्षेत्र के साथ समाधान चुनें (उदाहरण के लिए 2x2 4x4 की तुलना में अधिक बेहतर है)।
- यदि यह कोड को प्रारूपित करना असंभव है, तो आउटपुट
:~(
। - अंतिम पंक्ति के बाद की नई लाइन वैकल्पिक है।
- [नया] आप सुरक्षित रूप से मान सकते हैं कि ३३ से नीचे के कोड वाला कोई भी वर्ण सफेद-स्थान है। मुझे उम्मीद है कि यह गोल्फ के लिए आपकी मदद करेगा।
टेस्ट
Input Output Code length Comment
+++++++++ +++ 9 Alice is lucky,
+++ her code perfectly fits a square.
+++
++++++++ +++ 8 Though code length isn't enough for a square,
+ + a small gap fixes it.
+++
++++++ :~( 6 No luck, code cannot be formatted.
Hello, Hell 12 Input may contain any ASCII characters,
World! o , but whitespaces in input should be ignored.
W o
rld!
+++++ + +++++ +++++ 22 Gap is not required to be a square,
+++++ + +++++ +++++ it can be a rectangle.
+ +
+++++
+++++
+++ + +++ ++++++++ 28 There exists another solution:
+++ + +++ + + 6x6 square with 4x2 gap,
+++ + +++ + + but in Alice's opinion square gap
+++ + +++ + + makes code more readable.
+ +
+ +
+ +
++++++++
मुश्किल परीक्षण
This must be Thism 24 7x7 with 5x5 gap looks good,
5x5 with 1x1 ustbe but 5x5 with 1x1 gap is better,
gap. 5x 5w because gap area is smaller.
ith1x
1gap.
+++ +++ +++ :~( 18 In case you tried 5x5 square
+++ +++ +++ with 7x1 gap ;)
साधन
अंतरिक्ष को बचाने के लिए आप tio.run पर नमूना कोड और अतिरिक्त परीक्षण के मामले पा सकते हैं
[नया] आप १०० अक्षरों तक के इनपुट के लिए स्वीकृत समाधानों की तालिका देख सकते हैं । मैंने चौड़ाई और ऊँचाई की अदला-बदली की, क्योंकि यह अधिक इंट्रूव्यू लगता है।
से प्रेरित: पाठ का एक वर्ग
परिवर्तन
नमूना कोड में 2 परीक्षण, फिक्स्ड बग जोड़ा गया।
100 तक के समाधानों की तालिका को जोड़ा गया, सफेद-स्थान स्पष्टीकरण जोड़ा गया।