ফিবোনাচি সিকোয়েন্স মোড কে-তে অনুপস্থিত নম্বরগুলি সন্ধান করুন


20

এই গণিত.এসই প্রশ্ন দ্বারা অনুপ্রাণিত ।

পটভূমি

ফিবানচি সিকোয়েন্স (যাকে বলা হয় F) ক্রম, শুরু হয়েছে 0, 1এমন প্রতিটি নম্বর ( F(n)) (পরে প্রথম দুই) এটা আগে দুই এর সমষ্টি (হয় F(n) = F(n-1) + F(n-2))।

একটি ফিবোনাচি সিকোয়েন্স মোড কে (ডাকা M) হ'ল ফিবোনাচি সংখ্যা মোড কে ( M(n) = F(n) % K) এর অনুক্রম ।

এটি দেখানো যেতে পারে যে ফিবোনাচি সিকোয়েন্স মোড কে সমস্ত কে-র জন্য চক্রাকার, কারণ প্রতিটি মান পূর্ববর্তী জোড় দ্বারা নির্ধারিত হয়, এবং কেবলমাত্র 2 কে অ-নেতিবাচক পূর্ণ সংখ্যার কে এর চেয়ে কম হয় Because কারণ ফিবোনাচি সিকোয়েন্স মোড কে পদগুলির প্রথম পুনরাবৃত্তি জোড়ার পরে চক্রীয় হয়, এমন একটি সংখ্যা যা ফিওোনাসি সিকোয়েন্স মোড কে তে উপস্থিত হয় না আগে শর্তাবলীর প্রথম পুনরাবৃত্তি জোড়াটি কখনই উপস্থিত হবে না।

কে = 4 এর জন্য

0 1 1 2 3 1 0 1 ...

কে = 8 এর জন্য

0 1 1 2 3 5 0 5 5 2 7 1 0 1 ...

খেয়াল করুন যে কে = 8, 4 এবং 6 এর জন্য পুনরাবৃত্তির আগে উপস্থিত হবে না 0 1, সুতরাং 4 এবং 6 কখনও ফাইবোনাচি সিকোয়েন্স মোড 8 এ উপস্থিত হবে না।

চ্যালেঞ্জ

একটি পূর্ণসংখ্যার কে 0 এর চেয়ে কঠোরভাবে বৃহত্তর দেওয়া হয়েছে, কে-এর চেয়ে কম অ-নেতিবাচক পূর্ণসংখ্যার সমস্ত আউটপুট দেয় যা ফিবোনাচি সিকোয়েন্স মোড কে তে উপস্থিত হয় না output

বিধি

  • ডিফল্ট লুফোলগুলি নিষিদ্ধ

  • ডিফল্ট আই / ও

  • প্রোগ্রাম বা ফাংশন গ্রহণযোগ্য

  • আপনি ধরে নিতে পারেন যে কে আপনার স্থানীয় পূর্ণসংখ্যার প্রকারে ( কারণ অনুসারে ) ফিট করবে।

  • যদি কে এর চেয়ে কম নেতিবাচক সংখ্যা থাকে যা ফিবোনাচি সিকোয়েন্স মোড কে তে উপস্থিত না হয়, আপনার প্রোগ্রাম / ফাংশনটিতে কোনও যুক্তিসঙ্গত পদ্ধতিতে এই জাতীয় সমস্ত সংখ্যা আউটপুট করা উচিত।

  • যদি K এর চেয়ে কম অ-নেতিবাচক পূর্ণসংখ্যা না থাকে যা ফিবোনাচি সিকোয়েন্স মোড কে তে উপস্থিত না হয়, আপনার প্রোগ্রাম / ফাংশন এটিকে একটি খালি তালিকা ফিরিয়ে দিয়ে, কোনও কিছুই মুদ্রণ করে, ত্রুটি তৈরি করে ইত্যাদি নির্দেশ করতে পারে etc.

  • অর্ডার কিছু যায় আসে না।

  • এটি , তাই প্রতিটি ভাষার মধ্যে সংক্ষিপ্ত উত্তর।

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

অনলাইনে পরীক্ষার কেস তৈরি করুন!

খালি খালি পরীক্ষার কেস

  8 [4, 6]
 11 [4, 6, 7, 9]
 12 [6]
 13 [4, 6, 7, 9]
 16 [4, 6, 10, 12, 14]
 17 [6, 7, 10, 11]
 18 [4, 6, 7, 9, 11, 12, 14]
 19 [4, 6, 7, 9, 10, 12, 14]
 21 [4, 6, 7, 9, 10, 11, 12, 14, 15, 16, 17, 19]
 22 [4, 6, 7, 9, 15, 17, 18, 20]
 23 [4, 7, 16, 19]
 24 [4, 6, 9, 11, 12, 14, 15, 18, 19, 20, 22]
 26 [4, 6, 7, 9, 17, 19, 20, 22]
 28 [10, 12, 14, 16, 18, 19, 23]
 29 [4, 6, 7, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 27]
 31 [4, 6, 9, 12, 14, 15, 17, 18, 19, 22, 25, 29]
 32 [4, 6, 10, 12, 14, 18, 20, 22, 26, 28, 30]
 33 [4, 6, 7, 9, 15, 17, 18, 20, 24, 26, 27, 28, 29, 31]
 34 [4, 6, 7, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 27, 28, 30]
 36 [4, 6, 7, 9, 10, 11, 12, 14, 16, 18, 20, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32]
 37 [9, 10, 14, 17, 20, 23, 27, 28]
 38 [4, 6, 7, 9, 10, 11, 12, 14, 15, 16, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 36]
 39 [4, 6, 7, 9, 15, 17, 19, 20, 22, 24, 30, 32, 33, 35]
...
200 [4, 6, 12, 14, 20, 22, 28, 30, 36, 38, 44, 46, 52, 54, 60, 62, 68, 70, 76, 78, 84, 86, 92, 94, 100, 102, 108, 110, 116, 118, 124, 126, 132, 134, 140, 142, 148, 150, 156, 158, 164, 166, 172, 174, 180, 182, 188, 190, 196, 198]
...
300 [6, 18, 30, 42, 54, 66, 78, 90, 102, 114, 126, 138, 150, 162, 174, 186, 198, 210, 222, 234, 246, 258, 270, 282, 294]
...
400 [4, 6, 10, 12, 14, 20, 22, 26, 28, 30, 36, 38, 42, 44, 46, 52, 54, 58, 60, 62, 68, 70, 74, 76, 78, 84, 86, 90, 92, 94, 100, 102, 106, 108, 110, 116, 118, 122, 124, 126, 132, 134, 138, 140, 142, 148, 150, 154, 156, 158, 164, 166, 170, 172, 174, 180, 182, 186, 188, 190, 196, 198, 202, 204, 206, 212, 214, 218, 220, 222, 228, 230, 234, 236, 238, 244, 246, 250, 252, 254, 260, 262, 266, 268, 270, 276, 278, 282, 284, 286, 292, 294, 298, 300, 302, 308, 310, 314, 316, 318, 324, 326, 330, 332, 334, 340, 342, 346, 348, 350, 356, 358, 362, 364, 366, 372, 374, 378, 380, 382, 388, 390, 394, 396, 398]
...

খালি পরীক্ষার কেস (কোনও আউটপুট, ত্রুটি, খালি তালিকা ইত্যাদি গ্রহণযোগ্য আউটপুট নয়)

1, 2, 3, 4, 5, 6, 7, 9, 10, 14, 15, 20, 25, 27, 30, 35 ... 100 ...

সম্পর্কিত:

ফিবোনাচি অরবিট গণনা করা হচ্ছে

পিসানো পিরিয়ড সন্ধান করুন


স্যান্ডবক্স (মুছে ফেলা)।
pizzapants 184

উত্তর:


6

জেলি , 9 8 বাইট

²RÆḞ%ḟ@Ḷ

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

A001175 p(n) <= 6nথেকে পাইসানো পিরিয়ডের ভিত্তিতে । এছাড়াও, p(n) <= 6n <= n^2জন্য n >= 6এবং p(n) <= n^2জন্য n < 6। ডেনিসকে এই বাইট সংরক্ষণ করে।


²পরিবর্তে কাজ করা উচিত ×6
ডেনিস

6

হাস্কেল , 70 বাইট

কিছু পরিমাণ বাইট এসোলিং ফলের জন্য ধন্যবাদ সংরক্ষণ করেছে

8 টি বাইট লাইকোনিকে ধন্যবাদ রক্ষা করেছে

a=1:scanl(+)1a
f x=[u|u<-[2..x-1],and[mod b x/=u|(_,b)<-zip[1..x^2]a]]

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


পছন্দ করুন আমি নিজেই একটি অনুরূপ সিদ্ধান্তে আসছিলাম।
গম উইজার্ড

read$showfromIntegerএই ক্ষেত্রে পরিবর্তে কাজ করে এবং দুটি বাইট সংরক্ষণ করে।
লাইকনি

zip[1..x^2]ছাঁটাইয়ের জন্য ব্যবহার করা আরও কিছু বাইট সংরক্ষণ করে: অনলাইনে চেষ্টা করে দেখুন!
লাইকনি

@ লাইকনি কিছুক্ষণ সময় নিয়েছিল কিন্তু আমি পরিবর্তনটি করেছি। ধন্যবাদ, এটি একটি ভাল ধারণা।
গম উইজার্ড

5

পার্ল 6 ,  43 42 39  32 বাইট

{^$_ (-)(1,1,(*+*)%$_...->\a,\b{!a&&b==1})}

এটা পরীক্ষা করো

{^$_∖(1,1,(*+*)%$_...->\a,\b{!a&&b==1})}

এটা পরীক্ষা করো

{^$_∖(1,1,(*+*)%$_...{!$^a&&$^b==1})}

এটা পরীক্ষা করো

{^$_∖(1,1,(*+*)%$_...!*&*==1)}

এটা পরীক্ষা করো

সম্প্রসারিত:

{  # bare block lambda with implicit parameter 「$_」

  ^$_               # Range upto and excluding the input

                   # set minus (U+2216)

  (                 # generate the Fibonacci sequence mod k

    1, 1,           # seed the sequece (can't be 0,1)

    ( * + * ) % $_  # add two values and modulus the input (lambda)

    ...             # keep doing that until

                    # it matches 0,1
    !*              #   negate the first param (1 when 0)
    &               #   and Junction
    *               #   second param
    == 1            #   both match 1

  )
}

3

> <> , 48 বাইট

01\
?!\:&+{:}%:1$0p&$:
v0\~:1=?
>?!;1-::0g?!nao:

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

-V পতাকাটির মাধ্যমে ইনপুট নেয়।

প্রচুর অতিরিক্ত নিউলাইন প্রিন্ট করে তবে কাজটি হয়ে যায়। এটি প্রাথমিকভাবে সংখ্যাটির সেট সংরক্ষণ করার জন্য প্রথম লাইনটি ব্যবহার করে যা ক্রমটিতে এখনও পর্যন্ত উপস্থিত হয়েছে।

কিভাবে এটা কাজ করে:

01\    Input is already on the stack
...... Initialises the sequence with 1 and 0
...... Goes to the second line
......

......
..\:&+{:}% Gets the next number in the modded Fibonacci sequence while preserving the previous number
......
......

......
..........:1$0p&$: Puts a 1 at that cell number on the first line
.......
.......

......             If the number is a 0 go to the third line
?!\..............: Check if the next number is a 1, meaning we've reached the end of the sequence
v0\~:1=?           Go to the fourth line if so
>.....             Re-add the 0 and go back to the second line if not

......           While input:
......             Get the cell from the first line
......             If not 0: print the number
>?!;1-::0g?!nao:   Finally, print a newline and decrement the input


3

এমএটিএল , 19 18 বাইট

0lbU:"yy+]vG\G:qX~

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

-1 বাইট ধন্যবাদ গুইস্পিকে ধন্যবাদ।

  bU:"   ]         % Do K^2 (>6K) times.
0l    yy+          %  Fibbonaci
                X~ % Set exclusive difference between
          vG\      %  the fibonacci numbers mod K
             G:q   %  and 0...K-1

18 বাইট ; পুনর্বিন্যাস আপনার ব্যবহার পুনরুদ্ধার X~!
জিউস্পে

@ জিউসেপ ধন্যবাদ! এখনও খুব দীর্ঘ যদিও ....
সানচিইস


2

তুষ , 13 12 10 বাইট

ধন্যবাদ -জগারব -২ বাইটের জন্য!

-U2m%⁰İfŀ⁰

সমস্ত পূর্ণসংখ্যার উপস্থিতির ক্ষেত্রে খালি তালিকা মুদ্রণ করে, অনলাইনে চেষ্টা করে দেখুন!

ব্যাখ্যা

-U2m%⁰İfŀ⁰  -- named argument ⁰, example with: 8
-           -- difference of
        ŀ⁰  -- | lowered range: [0,1,2,3,4,5,6,7]
            -- and
      İf    -- | Fibonacci sequence: [1,1,2,3,5,8,13,21,34,55,89,144,233,377…
   m%⁰      -- | map (modulo ⁰): [1,1,2,3,5,0,5,5,2,7,1,0,1,1…
 U2         -- | keep longest prefix until 2 adjacent elements repeats: [1,1,2,3,5,0,5,5,2,7,1,0,1]
            -- : [4,6]

আপনি U2দীর্ঘতম উপসর্গ পেতে ব্যবহার করতে পারেন যেখানে কোনও সংলগ্ন জুটি পুনরাবৃত্তি করে না।
Zgarb

2

পাইথন 3 , 78 বাইট

def m(K):M=0,1;exec(K*6*'M+=sum(M[-2:])%max(K,2),;'+'print({*range(K)}-{*M})')

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

একটি সেট মুদ্রণ করে, তাই খালি পরীক্ষার ক্ষেত্রে আউটপুট হয় set()যা খালি সেট।



আপনি কি পাইথন ২-এ বোঝাতে চান, তাই না? নিশ্চিত
এরিক আউটগল্ফার

2

আর, 92 86 বাইট

@ জিউসেপিকে 6 বাইট সংরক্ষণের জন্য ধন্যবাদ !

function(k,n=!!0:2){while(any((z=tail(n,2))-n[1:2]))n=c(n,sum(z)%%k);setdiff(1:k-1,n)}

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

বেশ সহজ সরল বাস্তবায়ন ( পূর্ববর্তী সংস্করণ , কিন্তু একই ধারণা):

function(k,
         K=1:k-1,      #Uses default arguments to preset variables for legibility 
         n=c(0,1,1)){  #(wouldn't change byte-count to put them in the body of the function)
    while(any((z=tail(n,2))!=n[1:2])) #Do as long as first 2 elements are not identical to last 2 elements
        n=c(n,sum(z)%%k) #Built the fibonacci mod k sequence
    K[!K%in%n] #Outputs integers < k if not in sequence.
}


@ জিউসেপ আহ setdiff, ভাল ধারণা!
প্ল্যানাপাস

70 জন বাইটগুলি1:k^2 যে দৃষ্টিভঙ্গিটি প্রত্যেকে ব্যবহার করে তা পোর্ট করে
জিউসেপ

2

পাইথন 3, 173 152 143 131 বাইট

f=lambda n,m,a=0,b=1:a%m if n<=0else f(n-1,m,b,a+b)
p=lambda n,i=2,y={0}:y^{*range(n)}if f(i,n)==1>f(i-1,n)else p(n,i+1,y|{f(i,n)})

@Ovs কে বিশেষ ধন্যবাদ

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

এটা কিভাবে কাজ করে?

প্রথম ফাংশনটিতে দুটি প্যারামিটার মি এবং এন লাগে এবং এটি নবম ফিবোনচি নম্বর মোড ফেরত দেয়। দ্বিতীয় ফাংশনটি ফিবোনাচি নম্বর মোড কে দিয়ে যায় এবং 0 এবং 1 এর পুনরাবৃত্তি হয় কিনা তা পরীক্ষা করে। এটি একটি তালিকায় সংখ্যাগুলি সঞ্চয় করে এবং 1-n সংখ্যাযুক্ত একটি তালিকার সাথে এটি তুলনা করে। সদৃশ নম্বরগুলি সরানো হবে এবং অবশিষ্ট নম্বরগুলি ফিরিয়ে দেওয়া হবে।


এটি শিরোনামের একটি অংশ এবং কোডে অন্তর্ভুক্ত করা বাধ্যতামূলক নয়।
মনীষ কুণ্ডু

ঠিক আছে। @ ওভিএস বলার জন্য ধন্যবাদ, আমি এ সম্পর্কে অসচেতন ছিলাম।
মনীশ কুণ্ডু

1
131 বাইট পরিবর্তে কোঁকড়ানো বন্ধনী set()এবং চেইন তুলনা সঙ্গে সেট তৈরি করে ।
ovs


2

রুবি , 47 বাইট

->n{a=b=1;[*1...n]-(1..n*n).map{a,b=b,a+b;a%n}}

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

এটি কিছু একই যুক্তি ব্যবহার করার সময় এটি জিবি এর উত্তর ভিত্তিক নয় ।

ব্যাখ্যা:

->n{
  a=b=1;   # start sequence with 1,1
  [*1...n] # all the numbers from 1 to n-1 as an array
           # 0 is excluded as it should never be in the final answer 
  -  # set operation; get all items in the first set and not in the second
  (1..n*n).map{ # n squared times
    a,b=b,a+b;  # assign next fibonacci numbers 
    a%n         # return a fibonacci number mod n
  }    # Map to an array
}



1

এলিক্সির , 148 144 বাইট

 fn x->Enum.to_list(1..x-1)--List.flatten Enum.take_while Stream.chunk(Stream.unfold({1,1},fn{p,n}->{rem(p,x),{n,p+n}}end),2),&Enum.sum(&1)!=1end

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

কোনও বিশেষভাবে প্রতিযোগিতামূলক উত্তর নয়, তবে গল্ফের জন্য সত্যিই মজাদার ছিল! এলিক্সির একটি দুর্দান্ত পঠনযোগ্য ভাষা, তবে মাঝের চরিত্রগুলির জগাখিচির জন্য একটি ব্যাখ্যা অনুসরণ করা হয়েছে।


এই ব্যাখ্যাটি দুটি বিভাগে রয়েছে, মোড-ফিবোনাচি এবং এটি অপারেটিং

মডুলাস কোমায়:

Stream.unfold({1,1},fn{p,n}->{rem(p,x),{n,p+n}}end)

এটি ফিবোনাচি মোডের একটি অসীম স্ট্রিম ফিরিয়ে দেয় x। এটি একটি সঞ্চালক দিয়ে শুরু হয় {1,1}এবং নিম্নলিখিত অপারেশন বিজ্ঞাপন ইনফিনিটাম প্রয়োগ করে: প্রদত্ত সঞ্চালক {p,n}, p mod xপ্রবাহে আউটপুট । তারপরে, সংযোজকটি সেট করুন{n,p+n}

বাকিটা:

fn x->                              Define a fxn f(x) that returns
  Enum.to_list(1..x-1)--            The numbers from 1..x-1 that are not in
  List.flatten                      The flattened list constructed by
    Enum.take_while                 Taking from mod-fib until
      Stream.chunk(                 A 2-size chunk
        Stream.unfold({1,1},fn{p,n}->{rem(p,x),{n,p+n}}end) (of mod fib)
        ,2)
      ,&Enum.sum(&1)!=1             sums to 1, representing [0,1] or [1,0]
end



1

জাভাস্ক্রিপ্ট (ES6), 84 বাইট

f=(n,a=0,b=1,q=[...Array(n).keys()])=>a*b+a-1?f(n,b,(a+b)%n,q,q[b]=0):q.filter(x=>x)

1

পাইথন 3, 76 বাইট

def t(n,r=[1]):
 while n*n>len(r):r+=[sum(r[-2:])%n]
 return{*range(n)}-{*r}

এটি কেবলমাত্র ফাইবোনাচি সংখ্যাগুলির দীর্ঘতম চক্রের উপরে নজর রাখে (এন ^ 2) এবং সেই সময়ের মধ্যে উপস্থিত সমস্ত সংখ্যার একটি তালিকা তৈরি করে। যুক্তি সহজ করার জন্য সংখ্যাগুলি মডিউলগুলিতে সংরক্ষণ করা হয়।

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