आगे जोड़ते, संलग्न अनुक्रम


14

कार्य

प्रीपेंड, एपेंड-सीक्वेंस को इस तरह से पुनरावर्ती रूप से परिभाषित किया गया है

  • a (1) = 1
  • a (n) = a (n-1) .n, if n सम है
  • a (n) = na (n-1), अगर n विषम है

जहां । पूर्णांक संघटन का प्रतिनिधित्व करता है।

तो पहले कुछ शब्द हैं: 1,12,312,3124,53124,531246,7531246,...यह A053064 है

आपका कार्य है, पूर्णांक a> 0 को n को वापस करने के लिए , जैसे कि n वें तत्व prepend में, append-Sequence एक के बराबर है और यदि ऐसा कोई n मौजूद नहीं है तो 0, एक ऋणात्मक संख्या या त्रुटि आदि।

नियम

  • इनपुट को एक पूर्णांक, स्ट्रिंग, पात्रों की सूची / अंकों आदि के रूप में लिया जा सकता है।
  • आउटपुट को STDOUT में प्रिंट किया जा सकता है या लौटाया जा सकता है (पूर्णांक, स्ट्रिंग आदि ठीक है)
  • अमान्य इनपुट और मामले में ऐसा कोई n मौजूद नहीं है, आपका प्रोग्राम कुछ भी कर सकता है लेकिन एक सकारात्मक पूर्णांक लौटाता है (उदाहरण के लिए लूप हमेशा के लिए, 0 वापस लौटाएं।)
  • आप 0-इंडेक्सिंग का उपयोग करने का विकल्प चुन सकते हैं, लेकिन तब यदि कोई n मौजूद नहीं है , तो आउटपुट 0 नहीं हो सकता है

परीक्षण के मामलों

1 -> 1
12 -> 2
21 -> 0
123 -> 0
312 -> 3
213 -> 0
211917151311975312468101214161820 -> 21
2119171513119753102468101214161820 -> 0
333129272523211917151311975312468101214161820222426283031 -> 0
999795939189878583817977757371696765636159575553514947454341393735333129272523211917151311975312468101214161820222426283032343638404244464850525456586062646668707274767880828486889092949698100 -> 100

अधिक औपचारिक: a(n-1)*(int(log(n))+1)+nऔर n*(int(log(n))+1)+a(n-1)?
श्री Xcoder

1
@ Mr.Xcoder मुझे लगता है कि कहेंगे कम पी: औपचारिक
पोस्ट रॉक Garf हंटर

@JonathanAllan यह पहले से ही ~ 10 मिनट के लिए प्रश्न में है।
श्री एक्सकोडर

2
मेरा सुझाव है कि अमान्य इनपुट के लिए त्रुटियों की अनुमति है।
user41805

मेरा सुझाव है कि अमान्य इनपुट के लिए अपरिभाषित व्यवहार की अनुमति है।
श्री एक्सकोडर

जवाबों:


6

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

एक स्ट्रिंग के रूप में इनपुट लेता है। यदि कोई अनुक्रमणिका नहीं मिली है, तो एक पुनरावर्ती त्रुटि फेंकता है।

f=(n,s=k='1')=>n==s?k:f(n,++k&1?k+s:s+k)

डेमो


मुझे लगता है कि आप इसके साथ एक बाइट बचा सकते हैं: f=(n,s=k='1')=>n-s?f(n,++k&1?k+s:s+k):k
रिक हिचकॉक

@RickHitchcock दुर्भाग्य से, यह संख्या की तुलना को बाध्य करेगा और सटीक हानि के कारण बड़े इनपुट पर गलत सकारात्मकता का परिचय देगा।
अरण्युलद

पकड़ लिया। यह परीक्षण मामलों पर काम करता है, लेकिन अनिश्चित था कि यह अन्य स्थितियों को कैसे संभालता है।
रिक हिचकॉक

6

सी # (.NET कोर) , 83, 80, 60 59 बाइट्स

n=>{int i=0;for(var t="";t!=n;)t=++i%2<1?t+i:i+t;return i;}

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

एक लैम्बडा फ़ंक्शन में एक स्ट्रिंग के रूप में इनपुट लेता है। 1 अनुक्रमित। सत्य के लिए मान का सूचकांक लौटाता है, या "फाल्सी" के लिए अनैतिक रूप से लूप करता है


6

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

-1 बाइट के लिए @EriktheOutgolfer का धन्यवाद ।

f=lambda x,i='1',j=2:i!=`x`and f(x,[i+`j`,`j`+i][j%2],j+1)or~-j

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

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

-18 बाइट्स @officialaimm की बदौलत , क्योंकि मैंने नोटिस नहीं किया था कि बाहर की अनुमति नहीं थी!

x,i,j=input(),'1',1
while i!=x:j+=1;i=[i+`j`,`j`+i][j%2]
print j

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

अजगर 2 , 82 बाइट्स (हमेशा के लिए लूप नहीं करता है)

यह एक 0अमान्य इनपुट के लिए लौटाता है।

def f(n,t="",i=1):
 while len(t)<len(n):t=[t+`i`,`i`+t][i%2];i+=1
 print(n==t)*~-i

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



@officialaimm बहुत बहुत धन्यवाद! मैंने देखा कि हमेशा के लिए अनुमति नहीं दी गई थी।
श्री एक्सकोडर

एक f=lambda x,i='1',j=2:i!=`x`and f(x,[i+`j`,`j`+i][j%2],j+1)or~-j
मेमने के

@EriktheOutgolfer प्रतीक्षा करें, यह सब कुछ के लिए पुनरावृत्ति त्रुटि फेंकता है, हालांकि मैं सेट करता हूं sys.setrecursionlimit()। क्या आप एक टियो प्रदान कर सकते हैं?
श्री Xcoder

@ Mr.Xcoder क्या इसके लिए कोई त्रुटि करता है x=1? या x=12? मैंने सोचा कि यह केवल इस तरह की त्रुटि को कम से कम x=151311975312468101214या कुछ और के लिए फेंक देता है।
आउटगॉल्फ


3

05AB1E , 14 बाइट्स

$vDNÌNFs}«})Ik

इसे ऑनलाइन आज़माएं! या टेस्ट सूट के रूप में

व्याख्या

0-अनुक्रमित
रिटर्न -1 अगर इनपुट अनुक्रम में नहीं है।

$                 # push 1 and input
 v                # for each y,N (element, index) in input do:
  D               # duplicate top of stack
   NÌ             # push N+2
     NF }         # N times do:
       s          # swap the top 2 elements on the stack
         «        # concatenate the top 2 elements on the stack
          })      # end loop and wrap in a list
            Ik    # get the index of the input in this list

हाहा, यह मूल रूप से gहटाए गए और परिशिष्ट / प्रीपेंड चीज़ के साथ मेरा समाधान है । मैं अपना उत्तर हटा दूंगा
Okx

@ ओएक्सएक्स: ओह, हाँ, मैं आपको अपनी पोस्ट के लगभग मिनटों बाद ही आपको नीचे गिरा देता हूं। महान दिमाग;)
एमिगाना

2

आर , 73 बाइट्स

p=paste0;n=scan(,'');l='';while(l!=n){F=F+1;l="if"(F%%2,p(F,l),p(l,F))};F

स्टड से पढ़ता है और सूचकांक के मूल्य (संक्षेप में मुद्रित) देता है। जब अनुक्रम में मान नहीं है तो अनंत लूप। Fडिफ़ॉल्ट रूप से है FALSEजो 0अंकगणित में उपयोग किए जाने पर डाली जाती है ।

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


1

गणितज्ञ, 135 बाइट्स

s=t={};x=1;While[x<5!,{s~AppendTo~#&,s~PrependTo~#&}[[x~Mod~2+1]]@x;AppendTo[t,FromDigits@Flatten[IntegerDigits/@s]];x++];t~Position~#&

1

जेली ,  19 18  15 बाइट्स

+ḂḶṚm2;RḤ$ṁµ€Vi

पूर्णांक लेने और लौटाने का एक विचित्र लिंक।

इसे ऑनलाइन आज़माएं! (बहुत धीमा - TIO पर ~ 50s लेता है सिर्फ यह पुष्टि करने के लिए कि3124सूचकांक में है4)

बहुत तेज़ संस्करण के लिए पिछले 18 बटर का उपयोग करें (केवल इनपुट की लंबाई तक जांच करता है, जो पर्याप्त है)।

कैसे?

+ḂḶṚm2;RḤ$ṁµ€Vi - Link: number, v
           µ€   - perform the monadic link to the left for €ach k in [1,2,3,...v]
                -                 (v can be big, lots of k values makes it slow!)
 Ḃ              -   modulo k by 2  = 1 if odd 0 if even
+               -   add to k = k+isOdd(k)
  Ḷ             -   lowered range = [0,1,2,...,k+isOdd(k)]
   Ṛ            -   reverse = [k+isOdd(k),...,2,1,0])
    m2          -   modulo slice by 2 = [k+isOdd(k),k+isOdd(k)-2,...,3,1]
         $      - last two links as a monad:
       R        -   range(k) = [1,2,3,...,k]
        Ḥ       -   double = [2,4,6,...,2k]
     ;          - concatenate = [k+isOdd(k),k+isOdd(k)-2,...,3,1,2,4,6,...,2k]
         ṁ      - mould like range(k) = [k+isOdd(k),k+isOdd(k)-2,...,3,1,2,4,6,...,k-isOdd(k)]
                -   (this is a list of the integers to be concatenated for index k)
             V  - evaluate as Jelly code (yields a list of the concatenated integers)
              i - first index of v in that (or 0 if not found)

गणना करने में कितना समय लगेगा 211917151311975312468101214161820?
ओकेक्स

एक लंबा, लंबा समय: पी
जोनाथन एलन

हाँ, लेकिन कब तक?
ओकेक्स

ऐसा लगता है कि यह ऑर्डर v वर्ग है जहां v इनपुट पूर्णांक है।
जोनाथन एलन

@JonathanAllan तकनीकी रूप से आप कहते हैं कि : p
Eg the Outgolfer

1

स्विफ्ट 4 , 92 बाइट्स

यह अनधिकृत रूप से अमान्य मामलों के लिए है, इसलिए मैंने उन्हें परीक्षण लिंक में शामिल नहीं किया।

func f(x:String){var i="1",j=1;while i != x{j+=1;i=[i+String(j),String(j)+i][j%2]};print(j)}

परीक्षण सूट।

स्पष्ट रूप से, यह अब बंद होने के साथ है:

var f:(String)->Int={var i="1",j=1;while i != $0{j+=1;i=[i+String(j),String(j)+i][j%2]};return j}

परीक्षण सूट।


1

हास्केल , 115 85 बाइट्स

s=read.(show=<<)
f 1=1
f x|odd x=s[x,f$x-1]
f x=s[f$x-1,x]
g x=[n|n<-[1..],x==f n]!!0

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


@BruceForte मैं वास्तव में आपके सुझाव के लिए 30 धन्यवाद बचाने में कामयाब रहा।
पोस्ट रॉक गार्फ हंटर


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