दिए गए N, [n] के आउटपुट n-वें तत्व, 'B', 'AB', 'C', 'D', 'CD', 'ABCD', 'E', ...]?


12

निम्नलिखित सूची पर विचार करें:

expected = [
'A',
'B',
'AB',
'C',
'D',
'CD',
'ABCD',
'E',
'F',
'EF',
'G',
'H',
'GH',
'EFGH',
'ABCDEFGH',
'I',
'J',
'IJ',
'K',
'L',
'KL',
'IJKL',
'M',
'N',
'MN',
'O',
'P',
'OP',
'MNOP',
'IJKLMNOP',
'ABCDEFGHIJKLMNOP',
...
]

इसे देखने का एक तरीका यह है - आप चीनी अक्षरों को लिखना सीख रहे हैं और उनमें से बड़ी मात्रा में सीखना चाहते हैं। आप ए से शुरू करते हैं, फिर बी के साथ जाते हैं, फिर पहले से ही एक क्रम है जो दो की एक जोड़ी है इसलिए आप इसे जोड़ते हैं। फिर आप सी और डी के साथ जाते हैं, एक और जोड़ी बनाते हैं, इसका अभ्यास करते हैं। फिर आप पूर्वाभ्यास करते हैं: एबीसीडी। फिर वही ई के साथ H तक जाता है, फिर रिहर्सल करता है: ABCDEFGH। सूची अनंत है।

लक्ष्य इस सूची के एक n-वें तत्व को उत्पन्न और प्रिंट करना है, जो शून्य से ऊपर जा रहा है। मान लें कि 'Z' के बाद, आपको फिर से 'A' मिलता है।

जीतने का मापदंड स्रोत कोड लंबाई है।


3
सुनिश्चित नहीं है कि मैं इसे प्राप्त करूं, कब है BCया CDEF? हम क्या फैसला करते हैं और हम क्या नहीं करते? यह कैसे अनंत है अगर यह Aफिर से शुरू होता है Z(आप किसी बिंदु पर मतलब है कि ABCDEFGHIJKLMNOPQRSTUVWXZहमारे पास ABCDEFGHIJKLMNOPQRSTUVWXZABया कुछ है?)
जोनाथन एलन

5
चारों ओर से लपेटने वाले अक्षरों के लिए परीक्षण का मामला प्रशंसनीय है ( x,y,z,a,b...)।
स्टीवी ग्रिफिन

7
मैं दृढ़ता से अनुशंसा करता हूं कि आप अपनी चुनौती को बेहतर बनाने के लिए भविष्य में सैंडबॉक्स का उपयोग करें । वहाँ, आपको यह सुनिश्चित करने के लिए साथी उपयोगकर्ताओं से प्रतिक्रिया मिलेगी कि आपकी चुनौती मुख्य पीपीसीजी साइट के लिए उपयुक्त है! व्यक्तिगत रूप से, मैं सैंडबॉक्स में कम से कम 2 दिनों के लिए एक पोस्ट छोड़ दूंगा ताकि हर किसी को पोस्ट देखने का मौका मिले।
जुंगह्वान मिन

2
@JungHwanMin: सूची को असीम रूप से प्रिंट करने के लिए ठीक नहीं है। मैं पूर्णांकों की सूची लौटाता हूँ।
d33tah

4
"मैं पूर्णांकों की सूची वापस करूंगा" का क्या अर्थ है? पूर्णांकों की सूची का आउटपुट स्वीकार्य है या नहीं? यदि ऐसा है तो "Z 'के बाद मान लें कि, आपको' A 'फिर से मिलता है - तो क्या इस आउटपुट फॉर्मेट के साथ ऐसा होना चाहिए (i + 25 के बाद हमें फिर से मिल जाएगा)? (संबंधित जानकारी के साथ पोस्ट को भी अपडेट करें - टिप्पणियों में पाए जाने वाले विनिर्देश न छोड़ें।)
जोनाथन एलन

जवाबों:


8

पायथन 2, 53 बाइट्स

x,y=0,1
exec"x^=y-x;y+=x/y;"*input()
print range(x,y)

इसे ऑनलाइन आज़माएं!

परिवर्तन के साथ इस निर्माण के समान x = u-v,y = u


कितना अच्छा सरलीकरण है! पहला बयान x^=y-x-1 बाइट के लिए हो सकता है ।
xnor

@ एक्सनोर ओह राइट, सिली मी
केसाब

6

जावास्क्रिप्ट (ईएस 6), 59 बाइट्स

हम अनुक्रम को अनुक्रमित करके 2 बाइट्स बचा सकते हैं और केएसएबी द्वारा उपयोग किए गए एक के समान सरलीकरण का उपयोग कर सकते हैं :

n=>(x=g=y=>n?g(y+=y==(x^=y-x),n--):x<y?[x++,...g(y)]:[])(1)

इसे ऑनलाइन आज़माएं!


जावास्क्रिप्ट (ईएस 6), 61 बाइट्स

गैर-रैपिंग पूर्णांकों की सूची लौटाता है।

n=>(g=v=>n?g(u&-u^v?v*2:!!u++,n--):v?[u-v,...g(v-1)]:[])(u=1)

इसे ऑनलाइन आज़माएं!

डोनाल्ड नुथ द्वारा एक निर्माण पर आधारित है। संबंधित OEIS प्रविष्टि: A182105

कैसे?

यह एक दो चरण का पुनरावर्ती कार्य है।

हम पहले अनुक्रम रूप में परिभाषित करते हैं और:(un,vn)(u1,v1)=(1,1)

(un+1,vn+1)={(un+1,1),if (unANDun)=vn(un,2vn),otherwise

दूसरी पास के दौरान, हम सूची और अंततः इसे वापस करते हैं।[unvn,unvn+1,,un]


जावास्क्रिप्ट (ईएस 6), 97 बाइट्स

बड़े अक्षरों को लपेटता हुआ लौटता है।

n=>(s=i='',g=v=>(s+=String.fromCharCode(65+i++%26),n--)?g(u&-u^v?v*2:!!u++):s.substr(u-v,v))(u=1)

इसे ऑनलाइन आज़माएं!

या लोअरकेस में 91 बाइट्स


3

पायथन 2 , 60 बाइट्स

u=v=1
exec"v=u/v%2or 2*v;u+=1/v;"*input()
print range(u-v,u)

इसे ऑनलाइन आज़माएं!

नथुथ के निर्माण का उपयोग अरनुल्ड के आधार पर । स्थिति u&-u==vको सरल स्थिति u/v%2>0से या वैकल्पिक रूप u&v>0से प्रतिस्थापित किया जा सकता है , क्योंकि vहमेशा 2 की एक शक्ति होती है uजो विभाज्य होती है।


2

वोल्फ्राम लैंग्वेज (गणितज्ञ) , 80 71 बाइट्स

Range@#2+#-#2&@@Nest[If[#~BitAnd~-#==#2,{#+1,1},{#,2#2}]&@@#&,{1,1},#]&

इसे ऑनलाइन आज़माएं!

वर्णमाला के रैपिंग स्ट्रिंग के बजाय पूर्णांक की एक सूची देता है। 0 अनुक्रमित।

OEIS A182105 का उपयोग करता है , @Arnauld के लिए धन्यवाद।

सूची को अनिश्चित काल के लिए प्रिंट करना, 54 बाइट्स

Do[j=Range@i;#∣i&&Print@j[[-#;;]]&/@(2^j/2),{i,∞}]

इसे ऑनलाइन आज़माएं!

1 अनुक्रमित। TIO संस्करण में क्रैश रोकने के limबजाय है।




1

चारकोल , 45 42 35 बाइट्स

FN⊞υ⎇∧›Lυ¹⁼L§υ±¹L§υ±²⁺⊟υ⊟υ§αL⭆υκ⮌⊟υ

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। 1 अनुक्रमित। मुझे परिणाम उत्पन्न करने के लिए एक सरल सूत्र नहीं मिला, इसलिए मैंने बस प्रश्न में दी गई प्रक्रिया का पालन किया। स्पष्टीकरण:

FN

दिए गए नंबर को दोहराएं n

⊞υ

अगले तत्व को पूर्वनिर्धारित खाली सरणी में धकेलें, जिसकी uगणना ...

⎇∧›Lυ¹⁼L§υ±¹L§υ±²

... यदि एक से अधिक तत्व हैं uऔर अंतिम दो तत्वों की लंबाई समान है ...

⁺⊟υ⊟υ

... इसके बाद अंतिम तत्व को अंतिम तत्व में जोड़ें (जो उल्टे क्रम में परिणाम बनाता है) ...

§αL⭆υκ

... अन्यथा अगला पत्र गिनती करके पाया जा सकता है कि हमने अब तक कितने अक्षरों को जोड़ा है और पूर्व-निर्धारित बड़े अक्षरों में अनुक्रमिक रूप से अनुक्रमित किया है। (सूची के खाली होने पर या तो लंबाई या योग की राशि विफल हो जाती है, और सूची को स्ट्रिंग में मैप करने से एक खाली सूची विशेष-आवरण पर दो बाइट्स बचाती है।)

⮌⊟υ

अंतिम तत्व को लें u, जो nवांछित सूची का उलटा वें तत्व है, और इसके विपरीत रिवर्स प्रिंट करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.