বাউন্সিং ক্রম


19

আসুন একটি ক্রম সংজ্ঞায়িত করা যাক। আমরা বলব যে হ'ল ক্ষুদ্রতম সংখ্যা, , এর নিম্নলিখিত বৈশিষ্ট্য রয়েছে:একটি(এন)এক্স

  • এক্স এবং সহ-প্রধান (তারা কোনও কারণ ভাগ করে না)এন

  • এক্স ক্রমের আগে উপস্থিত হয় না

  • |এন-এক্স|>1

বেশিরভাগ সিকোয়েন্সের বিপরীতে ডোমেন এবং আমাদের সিকোয়েন্সের পরিসীমাটি 1 এর চেয়ে বেশি পূর্ণসংখ্যা হয় ।


আসুন শর্তাবলী প্রথম কয়েক গণনা করা যাক।

একটি(2) , অন্তত হওয়া আবশ্যক 4 কিন্তু 4 এবং 2 ভাগ একটি গুণক 2 তাই হতে হবে 5একটি(2)

একটি(3)a ( 2 ) , অন্তত হওয়া আবশ্যক 5 কিন্তু 5 দ্বারা নেওয়া হয় , তাই এটি অন্তত হয় 6 কিন্তু 6 শেয়ারের একটি ফ্যাক্টর সঙ্গে 3 তাই এটি হতে হবে অন্তত 7 , 7 পরিপূর্ণ তিনটি প্রয়োজনীয়তা এইভাবে ।একটি(2)একটি(3)=7

একটি(4)

  • 2 একটি ফ্যাক্টর শেয়ার করে
  • 3 খুব কাছে
  • 4 খুব কাছে
  • 5 খুব কাছে
  • 6 একটি ফ্যাক্টর শেয়ার করে
  • 7 দ্বারা নেওয়া (3)
  • 8 একটি ফ্যাক্টর শেয়ার করে
  • 9 ভাল

একটি(5)

  • 2 ভাল

কার্য

এই চ্যালেঞ্জে আপনাকে এমন একটি প্রোগ্রাম লিখতে হবে যা 1 এর চেয়ে বেশি সংখ্যক নেয় এবং ।একটি(এন)

এটি একটি প্রশ্ন তাই উত্তরগুলি বাইটে স্কোর করা হবে, কম বাইট আরও ভাল।

পরীক্ষার মামলা

সিকোয়েন্সের প্রথম দম্পতি এখানে রয়েছে (তারা অবশ্যই 2 ইনডেক্সড):

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

বোনাস ফান ফ্যাক্ট

ম্যাথ.সে ( লিঙ্ক ) এ রবার্ট ইস্রায়েল প্রমাণ করেছেন যে এই ক্রমটি তার নিজস্ব বিপরীতমুখী, এর অর্থ হ'ল একটি(একটি(এন))=এন সকল n এর জন্য।

OEIS

এই প্রশ্নটি জিজ্ঞাসা করার পরে আমি এই ক্রমটি ওআইআইএস-এ জমা দিয়েছিলাম এবং কয়েক দিন পরে এটি যুক্ত করা হয়েছিল।

ওইআইএস এ 290151


আপনি কতগুলি মান গণনা করেছেন? (বোনাস সম্পর্কে কথা বলছেন)
সোকরাটিক ফিনিক্স

@ স্বৈরাচারী ফিনিক্স আমি হাতে হাতে এটি করছি তাই কেবল পরীক্ষার ক্ষেত্রে দেখানো হয়েছে। আমি বর্তমানে বৃহত্তর মানগুলি পরীক্ষা করার জন্য একটি প্রোগ্রাম ডিবাগ করছি।
গম উইজার্ড 15

1
আমি যেমন আছি ... এখনই এটি কাজ করছে না যদিও আমার সূচি বন্ধ রয়েছে (সম্পাদনা করুন :) এবং এখন এটি কাজ করছে ... প্রথম 1000 নিরাপদ এক্সডি
সোক্রাটিক ফিনিক্স

আপনি কি (এক্স) এর জন্য একটি উচ্চতর বাউন্ড জানেন? উদাহরণস্বরূপ a (x) <u * x কিছু u এর জন্য। বিটিডব্লিউ প্রথম কয়েক মিলিয়ন মান নিরাপদ।
নিমি

@ নিমিমি আমি উপরের সীমানা সম্পর্কে জানি না।
গম উইজার্ড

উত্তর:


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)রাখে। অভ্যন্তরীণ লুপটি একটি (কে) গণনা করে, এবং বাইরের লুপটি কে এর উপরে পুনরাবৃত্তি করে যতক্ষণ না একটি (এন) গণনা করা হয়।

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

এটি আমার মনকে উড়িয়ে দেয় যে। নেট থেকে বিজিআইএনটিজার শ্রেণির বাইরে কোনও জিসিডি নেই।
মেগো


1

জাপট , ৩৩ বাইট (প্রতিযোগী নয়?)

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

এটি অনলাইন চেষ্টা করুন!

আমি Japt ইন্টারপ্রেটার একটি বাগ সংশোধন যখন এই সমাধান নিয়ে কাজ। এক বছর আগে এই মেটা পোস্টটি এই উত্তরটিকে প্রতিদ্বন্দ্বিতা করে বলে মনে করে, তবে এই নতুন মেটা পোস্টটি এতে আরও বেশি স্বাধীনতার জন্য চাপ দিচ্ছে। নির্বিশেষে, আমি এটিকে স্ক্র্যাপ করতে খুব বেশি সময় ব্যয় করেছি।


0

05 এ বি 1 ই , 26 বাইট

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

এন°T*10*এন10এন

ব্যাখ্যা:

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)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.