से प्रेरित होकर http://xkcd.com/710/ यहाँ इसके लिए एक कोड गोल्फ है।
चुनौती
0 से अधिक एक सकारात्मक पूर्णांक को देखते हुए, उस संख्या के लिए हेलस्टोन अनुक्रम का प्रिंट आउट लें।
हैलस्टोन अनुक्रम
अधिक विस्तार के लिए विकिपीडिया देखें ..
- यदि संख्या समान है, तो इसे दो से विभाजित करें।
- यदि संख्या विषम है, तो इसे तीन गुना करें और एक जोड़ें।
1. पहुंचने तक उत्पन्न संख्या के साथ इसे दोहराएं (यदि यह 1 के बाद भी जारी रहता है, तो यह अनंत लूप में जाएगा 1 -> 4 -> 2 -> 1...
)
कभी-कभी कोड समझाने का सबसे अच्छा तरीका है, इसलिए यहां विकिपीडिया से कुछ है
function collatz(n)
show n
if n > 1
if n is odd
call collatz(3n + 1)
else
call collatz(n / 2)
यह कोड काम करता है, लेकिन मैं एक अतिरिक्त चुनौती पर जोड़ रहा हूं। ओवरफ्लो को ढेर करने के लिए कार्यक्रम कमजोर नहीं होना चाहिए । तो यह या तो पुनरावृत्ति या पूंछ पुनरावृत्ति का उपयोग करना चाहिए।
इसके अलावा, बोनस अंक अगर यह बड़ी संख्या की गणना कर सकता है और भाषा पहले से ही इसे लागू नहीं करती है। (या यदि आप निश्चित लंबाई पूर्णांक का उपयोग करके बड़ी संख्या के समर्थन को लागू करते हैं)
परीक्षण का मामला
Number: 21
Results: 21 -> 64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1
Number: 3
Results: 3 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1
इसके अलावा, कोड गोल्फ में पूर्ण उपयोगकर्ता इनपुट और आउटपुट शामिल होना चाहिए।