सकारात्मक पूर्णांक n के लिए फ़ंक्शन f (n) को निम्नानुसार परिभाषित करें :
- n / 2 , यदि n सम है
- 3 * n + 1 , यदि n विषम है
यदि आप बार-बार इस फ़ंक्शन को 0 से अधिक किसी भी n पर लागू करते हैं , तो परिणाम हमेशा 1 में परिवर्तित होता है (हालांकि कोई भी अभी तक साबित नहीं कर पाया है)। इस संपत्ति को Collatz अनुमान के रूप में जाना जाता है ।
किसी पूर्णांक के रोक के समय को परिभाषित करें क्योंकि आपके पहुंचने से पहले आपको Collatz फ़ंक्शन f के माध्यम से इसे कितनी बार पास करना होगा । यहां पहले 15 पूर्णांकों के समापन समय हैं:
1 0
2 1
3 7
4 2
5 5
6 8
7 16
8 3
9 19
10 6
11 14
12 9
13 9
14 17
15 17
कॉलजेट चचेरे भाई के रूप में एक ही रोक समय के साथ संख्याओं के किसी भी सेट को कॉल करते हैं । उदाहरण के लिए, 5 और 32 Collatz चचेरे भाई हैं, 5 के एक रोक समय के साथ।
आपका कार्य: एक प्रोग्राम या फ़ंक्शन लिखना जो एक nonnegative पूर्णांक लेता है और Collatz चचेरे भाई के सेट को उत्पन्न करता है जिसका रोक समय उस पूर्णांक के बराबर है।
इनपुट
एक nonnegative पूर्णांक S, STDIN, ARGV या फ़ंक्शन तर्क के माध्यम से दिया जाता है।
उत्पादन
सभी नंबरों की एक सूची, जिसका रोक समय एस है, आरोही क्रम में क्रमबद्ध है । सूची आपके प्रोग्राम द्वारा आउटपुट हो सकती है, या आपके फ़ंक्शन द्वारा वापस या आउटपुट हो सकती है। आउटपुट स्वरूप लचीला है: अंतरिक्ष-अलग, न्यूलाइन-अलग, या आपकी भाषा का कोई भी मानक सूची प्रारूप ठीक है, जब तक कि संख्या एक दूसरे से आसानी से अलग हो जाती है।
आवश्यकताएँ
आपके सबमिशन को किसी भी S must 30 के लिए सही परिणाम देना चाहिए। इसे कुछ घंटों या दिनों में नहीं बल्कि कुछ सेकंड में समाप्त कर देना चाहिए।
उदाहरण
0 -> 1
1 -> 2
5 -> 5, 32
9 -> 12, 13, 80, 84, 85, 512
15 -> 22, 23, 136, 138, 140, 141, 150, 151, 768, 832, 848, 852, 853, 904, 906, 908, 909, 5120, 5376, 5440, 5456, 5460, 5461, 32768
यहाँ S = 30 के लिए आउटपुट का एक Gist दिया गया है ।
यह कोड-गोल्फ है : बाइट्स जीत में सबसे छोटा कार्यक्रम। सौभाग्य!