उछलता हुआ क्रम


19

हमें एक अनुक्रम परिभाषित करते हैं। हम कहेंगे कि (n) सबसे छोटी संख्या एक्स , जिसमें निम्नलिखित गुण हैं:

  • एक्स औरn सह-प्रधान हैं (वे कोई कारक साझा नहीं करते हैं)

  • एक्स अनुक्रम में पहले दिखाई नहीं देता है

  • |n-एक्स|>1

अधिकांश अनुक्रमों के विपरीत हमारे अनुक्रम का डोमेन और श्रेणी 1 से अधिक पूर्णांक हैं ।


आइए हम पहले दो पदों की गणना करें।

(2) , कम से कम होना चाहिए4, लेकिन4और2शेयर का एक पहलू2तो(2) होना चाहिए5

(3) , कम से कम होना चाहिए5लेकिन5से लिया जाता है(2) , तो यह कम से कम है6, लेकिन6शेयरों एक कारक के साथ3तो यह होना चाहिए कम से कम7,7पूरा सभी तीन आवश्यकताओं इस प्रकार(3)=7

(4)

  • 2 एक कारक साझा करता है
  • 3 बहुत करीब
  • 4 बहुत करीब
  • 5 बहुत करीब
  • 6 एक कारक साझा करता है
  • 7 द्वारा लिया गया (3)
  • 8 एक कारक साझा करता है
  • 9 अच्छा है

(5)

  • 2 अच्छा है

कार्य

इस चुनौती में आपको एक प्रोग्राम लिखना है जो 1 से अधिक संख्या लेता है और (n)

यह एक प्रश्न है, इसलिए उत्तर बाइट्स में स्कोर किए जाएंगे, कम बाइट्स बेहतर होने के साथ।

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

यहाँ अनुक्रम के पहले युगल शब्द हैं (वे निश्चित रूप से अनुक्रमित 2 हैं):

5,7,9,2,11,3,13,4,17,6,19,8,23,22,21,10,25,12,27,16,15,14

बोनस मजेदार तथ्य

Math.se (पर रॉबर्ट इसराइल द्वारा सिद्ध के रूप में लिंक ) इस क्रम, अपने स्वयं के उल्टा होता है कि इसका मतलब है कि ((n))=n सभी n के लिए।

OEIS

यह प्रश्न पूछने के बाद मैंने यह अनुक्रम OEIS को प्रस्तुत किया और कुछ दिनों के बाद इसे जोड़ा गया।

OEIS A290151


आपने कितने मूल्यों की गणना की? (बोनस के बारे में बात करते हुए)
सुकराती फीनिक्स

@ डेमोक्रेटिकफेनिक्स मैं इसे हाथ से कर रहा हूं ताकि केवल टेस्ट के मामलों में दिखाया गया हो। मैं वर्तमान में बड़े मूल्यों की जांच करने के लिए एक कार्यक्रम डिबग कर रहा हूं।
गेहूं जादूगर

1
जैसा कि मैं हूं ... यह अभी काम नहीं कर रहा है, हालांकि मेरी अनुक्रमणिका बंद है (संपादित करें :) और अब यह काम कर रहा है ... पहले 1000 सुरक्षित xD हैं
सुकराती फीनिक्स

क्या आप एक (x) के लिए एक ऊपरी सीमा जानते हैं? जैसे (x) <u * x कुछ u के लिए। Btw पहले कुछ मिलियन मान सुरक्षित हैं।
नीमी

@ निम्मी को मैं एक ऊपरी सीमा के बारे में नहीं जानता।
गेहूं जादूगर

जवाबों:


8

हास्केल , 61 बाइट्स

f n=[i|i<-[2..],gcd i n<2,all((/=i).f)[2..n-1],abs(n-i)>1]!!0

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

मैं हास्केल के लिए काफी नया हूं, इसलिए किसी भी गोल्फिंग युक्तियों की सराहना की जाती है।

2 बाइट्स के लिए गेहूं के जादूगर और 4 बाइट्स के लिए निम्मी का धन्यवाद

स्पष्टीकरण:

f n=[i|i<-[2..],gcd i n<2,all((/=i).f)[2..n-1],abs(n-i)>1]!!0
f n=                                                          -- define a function f :: Int -> Int
    [i|i<-[2..],                                              -- out of positive integers greater than two
                gcd i n<2,                                    -- gcd of i and n is 1
                          all((/=i).f)[2..n-1],               -- i isn't already in the sequence
                                               abs(n-i)>1]    -- and |n-i| > 1
                                                          !!0 -- take the first element

2

ऐलिस , 42 बाइट्स

/oi
\1@/2-&whq&[]w].q-H.t*n$K.qG?*h$KW.!kq

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

व्याख्या

/oi
\1@/.........

यह प्रोग्राम के लिए एक मानक टेम्प्लेट है जो एक नंबर को इनपुट के रूप में लेता है, और एक नंबर को आउटपुट करता है, इनपुट नंबर के नीचे स्टैक पर 1 को रखने के लिए संशोधित किया जाता है।

कार्यक्रम का मुख्य भाग प्रत्येक नंबर को टेप पर kस्लॉट में रखता है a(k)। आंतरिक लूप एक (k) की गणना करता है, और बाहरी लूप k के ऊपर पुनरावृति करता है जब तक कि एक (n) की गणना नहीं की जाती है।

1       push 1
i       take input
2-&w    repeat n-1 times (push return address n-2 times)
h       increment current value of k
q&[     return tape to position 0
]       move right to position 1
w       push return address to start inner loop
]       move to next tape position
.q-     subtract tape position from k
H       absolute value
.t*     multiply by this amount minus 1
n$K     if zero (i.e., |k-x| = 0 or 1), return to start of inner loop
.qG     GCD(k, x)
?       current value of tape at position: -1 if x is available, or something positive otherwise
*       multiply
h$K     if not -1, return to start of inner loop
W       pop return address without jumping (end inner loop)
.!      store k at position a(k)
k       end outer loop
q       get tape position, which is a(n)
o       output
@       terminate

1

VB.NET (.NET 4.5), 222 बाइट्स

Function A(n)
Dim s=New List(Of Long)
For i=2To n
Dim c=2
While Math.Abs(i-c)<2Or g(c,i)>1Or s.Contains(c)
c+=1
End While
s.Add(c)
Next
Return s.Last
End Function
Function g(a, b)
Return If(b=0,a,g(b,a Mod b))
End Function

मुझे आपका अपना जीसीडी रोल करना था। मैं यह भी पता नहीं लगा सका कि इसे पूरे समारोह में कैसे लाया जाए।

जीसीडी हमेशा> = 1 है, इसलिए केवल 1 को अनदेखा करने की आवश्यकता है

यह छोटा होने के कारण गोल्फ में शॉर्ट-सर्कुलेटिंग हो गया

संयुक्त राष्ट्र के golfed

Function Answer(n As Integer) As Integer
    Dim seqeunce As New List(Of Integer)
    For i As Integer = 2 To n
        Dim counter As Integer = 2
        ' took out short-circuiting in the golf because it's shorter
        ' GCD is always >= 1, so only need to ignore 1
        While Math.Abs(i - counter) < 2 OrElse GCD(counter, i) > 1 OrElse seqeunce.Contains(counter)
            counter += 1
        End While
        seqeunce.Add(counter)
    Next
    Return seqeunce.Last
End Function

' roll your own GCD
Function GCD(a, b)
    Return If(b = 0, a, GCD(b, a Mod b))
End Function

यह मेरे दिमाग को उड़ा देता है कि .NET में BigInteger वर्ग के बाहर निर्मित GCD नहीं है।
Mego


1

Japt , 33 बाइट्स (गैर प्रतिस्पर्धा?)

ò2 rÈc_aY >1«XøZ «Yk øZk}a+2}[] o

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

मैंने इस समाधान पर काम करते समय जाप इंटरप्रेटर में एक बग को तय किया । एक साल पहले की यह मेटा पोस्ट इस उत्तर को गैर-प्रतिस्पर्धी मानती है, लेकिन यह नया मेटा पोस्ट इसमें और अधिक स्वतंत्रता के लिए जोर दे रहा है। बावजूद, मैंने इसे स्क्रैप करने के लिए बहुत समय बिताया।


0

05AB1E , 26 बाइट्स

2IŸεDU°2Ÿ¯KʒX¿}ʒXα1›}θDˆ}θ

इसे ऑनलाइन आज़माएँ या पहले आउटपुट करेंnसूची के रूप में शर्तें । (नोट: °स्पष्ट रूप से अत्यंत धीमा है, इसलिए T*TIO लिंक के साथ बदल दिया गया है)10*n के बजाय 10n)।)

स्पष्टीकरण:

2IŸ               # Create a list in the range [2, input]
   ε              # Map each value `y` to:
    DU            #  Store a copy of `y` in variable `X`
    °2Ÿ           #  Create a list in the range [10**`y`,2]
       ¯K         #  Remove all values already in the global_array
       ʒX¿}       #  Only keep values with a greatest common divider of 1 with `X`
       ʒXα1›}     #  Only keep values with an absolute difference larger than 1 with `X`
             θ    #  After these filters: keep the last (the smallest) element
              Dˆ  #  And add a copy of it to the global_array
                # After the map: only leave the last value
                  # (and output the result implicitly)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.