एक काउंटरस्ट्रिंग कुछ प्रकार के आत्म-वर्णन परीक्षण डेटा है जो सॉफ्टवेयर परीक्षण में उपयोग किया जाता है। यह सुनिश्चित नहीं है कि यह वास्तव में जेम्स बाख द्वारा आविष्कार किया गया था , लेकिन मैं इसे वहां से जानता हूं।
विचार इस प्रकार है: परीक्षण डेटा में कई तारांकन ( *
) होते हैं। तारांकन के सामने की संख्या आपको बताती है कि उस बिंदु पर परीक्षण डेटा कितने समय के लिए है। यदि आपको परीक्षण डेटा में एक स्थिति जानने की आवश्यकता है जो कि तारांकन नहीं है, तो अंतिम तारांकन ढूंढें, पहले संख्या को देखें और उसके बाद आने वाले अंकों की संख्या जोड़ें।
अनुक्रम इस तरह शुरू होता है:
2*4*6*8*11*14*17*20*23*
^
जैसा कि आप देख सकते हैं, चिह्नित तारांकन स्थिति 14 पर है।
यदि किसी फ़ाइल को निम्नानुसार छोटा किया जाता है
[...]2045*20
तब आप यह पा सकते हैं कि कहीं 2047 वर्णों की सीमा है (2045 जहां तारांकन 2 से अधिक है 2
और 0
)।
यह सबसे छोटा (यह कोड-गोल्फ ) प्रोग्राम है जो आउटपुट (std :: out या file या जो कुछ भी) है, उस प्रारूप का एक मनमाना लंबा परीक्षण स्ट्रिंग बनाना आपका कार्य है। अक्षरों में लंबाई तर्क के रूप में दी गई है। कार्यक्रम 2 जीबी परीक्षण डेटा (इनपुट मूल्य 2147483647 वर्ण) तक समर्थन करेगा।
2 जीबी फ़ाइल में "खतरनाक" स्थिति:
8*11*
98*102*
998*1003*
9998*10004*
99998*100005*
999995*1000003*
9999995*10000004*
99999995*100000005*
999999995*1000000006*
यदि 995 * 999 * और 995 * 1000 * या इसी तरह के बीच कोई निर्णय लेने का निर्णय है, तो @Leaky नन के प्रश्न का उत्तर देना चाहिए : नहीं।
इनपुट मूल्य 2147483647 के साथ 2 जीबी फ़ाइल का अंत है:
2147483640*2147483
995*999*
और 995*1000*
या कुछ भी है कि पसंद है?