তবুও অব্যবহৃত জোড়


21

আসুন ধনাত্মক পূর্ণসংখ্যার একটি ক্রম সংজ্ঞায়িত করি। আমরা আগের সংখ্যার দ্বিগুণ হওয়ার জন্য এমনকি সংখ্যার ক্রমটি সংজ্ঞায়িত করব। সিকোয়েন্সের বিজোড় সূচকগুলি ক্ষুদ্রতম ধনাত্মক পূর্ণসংখ্যা হবে যা সিকোয়েন্সটিতে এখনও উপস্থিত হয়নি।

এখানে প্রথম দম্পতি পদ রয়েছে।

1,2,3,6,4,8,5,10,7,14,9,18,11,22,12,24,13,26,15,30

আপনি এটিকে সংক্ষিপ্ত জোড়গুলির তালিকা (এন, 2 এন) হিসাবেও ভাবতে পারেন যেখানে এখন পর্যন্ত এন সর্বনিম্ন অব্যবহৃত ধনাত্মক পূর্ণসংখ্যা।

কার্য

একটি নম্বর দেওয়া এন ইনপুট ক্যালকুলেট যেমন এন এই ক্রমানুসারে তম পরিভাষা।

এটি তাই বাইট হিসাবে পরিমাপ করা হিসাবে আপনার উত্স কোডের আকার হ্রাস করার লক্ষ্য করা উচিত।

OEIS A036552


সত্য যে ক্রম বিজোড় সূচকের ক্ষুদ্রতম হতে হবে ধনাত্মক পূর্ণসংখ্যা এখনো ক্রম প্রদর্শনে না। অপ্রাসঙ্গিক, তাই না?
অ্যাডম

1
এছাড়াও, কি জোড়া ?
অ্যাডম

@ অ্যাডম না এটি ঘটনা নয়। আমি নিশ্চিত নই যা আপনাকে এই ধারণা দেয় যা সম্ভবত আমি এটি খারাপভাবে বলেছি।
গম উইজার্ড

1
@ অ্যাডম ক্রমটি ভাবার আরেকটি উপায় হ'ল এটি সংক্ষিপ্ত জোড়া নিয়ে গঠিত (n,2n)এবং প্রতিটি সংখ্যা কেবল একবারে উপস্থিত হয়। পরের সীমাবদ্ধতা মেনে চলার সময় প্রতিটি জুটিকেই সবচেয়ে ছোট হিসাবে বেছে নেওয়া হয়।
মার্টিন ইন্ডার

3
সিরিজের বিজোড় উপাদানগুলির 2-অ্যাডিক মূল্যায়ন সর্বদা সমান। কারও কাজে লাগতে পারে।
ক্যালকুলেটরলাইন

উত্তর:


11

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

l(a:r)=a:2*a:l[x|x<-r,x/=2*a]
(l[1..]!!)

জিরো-ভিত্তিক। lবর্ধিত পূর্ণসংখ্যার একটি অলস তালিকা থেকে ক্রমান্বয়ে ক্রম তৈরি করে।


7

জাভাস্ক্রিপ্ট (ES6), 92 82 69 67 65 বাইট

n=>(F=i=>i^n?F(a[b=i&1?2*b:(g=k=>a[k]?g(k+1):k)(1)]=-~i):b)(a={})

কিভাবে?

আমরা ট্র্যাক রাখি:

  • সর্বশেষ valueোকানো মান
  • পূর্ববর্তী সমস্ত চেহারা মান সারণী

অভ্যন্তরীণভাবে, আমরা 0-ভিত্তিক সূচক ব্যবহার করছি i । অদ্ভুত এমনকি এমনকি আচরণগুলি উল্টানো হয়:

  • বিজোড় অবস্থানগুলিতে, পরবর্তী মানটি সহজভাবে 2 * b

  • এমনকি অবস্থানের এ, আমরা রিকার্সিভ ফাংশন ব্যবহার ছ () এবং লুকআপ টেবিল একটি ক্ষুদ্রতম ম্যাচিং মান করা যাবেঃ

    (g = k => a[k] ? g(k + 1) : k)(1)

কয়েকটি বাইট সংরক্ষণ করতে, আমি{} বরং পরিবর্তে আরম্ভ করা হয়েছে 0। এটি আমাদের ব্যবহার করতে বাধ্য করে:

  • i^nআমি এন সঙ্গে তুলনা কারণ ({}) ^ n === nযেখানে ({}) - nমূল্যায়ন NaN
  • -~iআমি বৃদ্ধি , কারণ ({}) + 1একটি স্ট্রিং উত্পন্ন।

ডেমো



5

পাইথন 3 , 80 72 69 বাইট

-7 বাইটস মিঃ এক্সকোডারকে ধন্যবাদ !

f=lambda n:n and[f(n-1)*2,min({*range(n+1)}-{*map(f,range(n))})][n%2]

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


1
আপনি 78 বাইটেরset(...) জন্য `{* ... with দিয়ে প্রতিস্থাপন করতে পারেন
মিস্টার এক্সকোডার

@ জ্যাচারý আপনি কি আমার মন্তব্যে জবাব দিচ্ছেন? যদি তা হয় তবে পাইথন 3 এ একটি সেট এর {*...}পরিবর্তে থাকতে পারে set(...)
মিস্টার এক্সকোডার

আমি চিন্তা না করেই মন্তব্য করছিলাম, আমি কয়েক মুহুর্ত পরে বুঝতে পারলাম যে {...for...in...}আরও বিদায় হবে।
জাকারি

প্রকৃতপক্ষে, এটি 4 বাইট সংরক্ষণ করবে, কারণ আপনি এটি দুটিবার ব্যবহার করেছেন
মিঃ এক্সকডার



3

গণিত , 56 53 বাইট

-৩ বাইট ধন্যবাদ জাংহওয়ান মিন !

(w={};Do[w~FreeQ~k&&(w=w~Join~{k,2k}),{k,#}];w[[#]])&

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

ওএআইএস লিঙ্কে প্রদত্ত গাণিতিক প্রকাশের ভিত্তিতে।


1
এছাড়াও 53 বাইট:Nest[k=0;If[#~FreeQ~++k,#~Join~{k,2k},#]&,{},#][[#]]&
জংহওয়ান মিন

3

পিএইচপি , 64 বাইট

for(;$argn-$i++;)if($i&$$e=1)for(;${$e=++$n};);else$e*=2;echo$e;

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

পিএইচপি , 77 বাইট

for(;$argn-$i++;$r[]=$e)if($i&1)for(;in_array($e=++$n,$r););else$e*=2;echo$e;

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

পিএইচপি , 78 বাইট

for(;$argn-$i++;)$e=$r[]=$i&1?end(array_diff(range($i,1),$r?:[])):2*$e;echo$e;

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



3

05 এ বি 1 , 16 15 14 বাইট

1-ইন্ডেক্স।
ক্রমটিতে বিজোড় সূচকগুলিতে উপাদানগুলির বাইনারি উপস্থাপনাটি এমনক একটি শূন্যের সমাপ্তিতে শেষ হয়: A003159

Lʒb1¡`gÈ}€x¹<è

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

ব্যাখ্যা

L                 # range [1 ... input]
 ʒ      }         # filter, keep only elements whose
  b               # ... binary representation
   1¡             # ... split at 1's
     `gÈ          # ... ends in an even length run
         €x       # push a doubled copy of each element in place
           ¹<è    # get the element at index (input-1)

3

পাইথন 2 , 59 51 49 বাইট

f=lambda n,k=2:2/n%-3*(1-k)or f(n+~(k&-k)%-3,k+1)

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

পটভূমি

প্রতিটি ধনাত্মক এন পূর্ণসংখ্যা n = 2 o (n) c (n) হিসাবে স্বতন্ত্রভাবে প্রকাশ করা যায় , যেখানে সি (এন) বিজোড় হয়।

যাক ⟨a এনএন> 0 চ্যালেঞ্জ বৈশিষ্ট থেকে ক্রম করা।

আমরা দাবি করি যে সমস্ত ধনাত্মক পূর্ণসংখ্যার জন্য এন , ও (একটি 2 এন -1 ) সমান । যেহেতু o (a 2n ) = o (2a 2n-1 ) = o (a 2n-1 ) + 1 , এটি o (a 2n ) সর্বদা বিজোড় দাবি করার সমতুল্য ।

দাবিটি মিথ্যা বলে মনে করুন এবং 2 মি -1 কে এই ক্রমের প্রথম বিজোড় সূচক হিসাবে ধরা যাক যে (একটি 2 মি -1 ) বিজোড়। নোট করুন যে এটি 2 মিটিকে ক্রমের প্রথম সমান সূচক হতে পারে যেমন ও (একটি 2 মি -1 ) সমান

o (একটি 2 মি -1 ) বিজোড় এবং 0 সমান , সুতরাং একটি 2 মি -1 2 দ্বারা বিভাজ্য । সংজ্ঞা অনুসারে, একটি 2 মি -1 হ'ল ক্ষুদ্রতম ধনাত্মক পূর্ণসংখ্যার ক্রমিকটিতে এখনও উপস্থিত হয় নি , যার অর্থ একটি 2 মি -1 / 2 অবশ্যই উপস্থিত হয়েছিল। যাক (প্রথম) এর সূচক হতে একটি 2m -1 / 2 মধ্যে একটি

যেহেতু o (a k ) = o (a 2m-1 /2) = o (a 2m-1 ) - 1 সমান, তাই n এর সংক্ষিপ্ততা ইঙ্গিত দেয় যে কে বিজোড়। ক্রমে, এর অর্থ এই যে একটি ট + 1 টি = 2A = একটি 2m -1 , সংজ্ঞা contradicting একটি 2m -1

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

এখনও আসতে পারে


3

আর , 70 69 65 বাইট

function(n){for(i in 2*1:n)F[i-1:0]=which(!1:n%in%F)[1]*1:2
F[n]}

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

একটি যুক্তিযুক্ত ফাংশন যা একটি যুক্তি গ্রহণ করে। Fডিফল্ট FALSEবা 0তাই যাতে অ্যালগরিদম সঠিকভাবে মূল্যায়ন করে যে কোনও ধনাত্মক পূর্ণসংখ্যার ক্রমটি এখনও নেই।

অ্যালগরিদম একটি জোড়া উত্পন্ন forনিম্নলিখিত পদ্ধতিতে (যেখানে লুপ iথেকে যায় 2কাছে 2nদ্বারা 2):

           which(!1:n%in%l)[1]     # the missing value
                              *1:2 # keep one copy the same and double the next
l[i-1:0]=                         # store into l at the indices i-1 and i


2

পার্ল 6 , 50 বাইট

{(1,{@_%2??2*@_[*-1]!!first *∉@_,1..*}...*)[$_]}

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

  • 1, { ... } ... *একটি অলস-উত্পাদিত অসীম অনুক্রম যেখানে প্রথমটির পরের প্রতিটি শব্দটি ব্রেস-সীমাবদ্ধ কোড ব্লক দ্বারা সরবরাহ করা হয়। যেহেতু ব্লকটি @_অ্যারের উল্লেখ করে , এটি অ্যারেটিতে পুরো বর্তমান ক্রমটি গ্রহণ করে।
  • যদি উপাদানের বর্তমান সংখ্যাটি বিজোড় ( @_ % 2) হয় তবে আমরা একটি সমান সূচকযুক্ত উপাদান তৈরি করি, সুতরাং পরবর্তী উপাদানটি আমাদের এখন পর্যন্ত থাকা শেষ উপাদানটির দ্বিগুণ 2 * @_[*-1]
  • অন্যথায়, আমরা প্রথম ধনাত্মক পূর্ণসংখ্যা যা এখনও ক্রমানুসারে প্রদর্শিত হবে না পাবেন: first * ∉ @_, 1..*
  • $_বাইরের ফাংশনের আর্গুমেন্ট। এটি ফাংশনের রিটার্ন মান দিয়ে অসীম অনুক্রমকে সূচক করে।

1

গণিত, 82 বাইট

(s={};a=1;f=#;While[f>0,If[s~FreeQ~a,s~AppendTo~{a,2a}];a++;f--];Flatten[s][[#]])&

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


ম্যাথামেটিকায় 58 বাইট (যদিও ধারণাটি বেশ আলাদা তাই আমার সম্ভবত একটি আলাদা উত্তর পোস্ট করা উচিত)।
notjagan

আপনি ওআইআইএস লিঙ্ক থেকে এটি অনুলিপি করেছেন?
J42161217

আমি টাস্কটি ফিট করার জন্য এবং আরও গল্ফ হওয়ার জন্য এটি পরিবর্তন করেছি তবে এটি কম-বেশি OEIS লিঙ্কের সমান।
notjagan

1
@ আপনি চাইলে নতুন উত্তর পোস্ট করবেন না এবং লেখককে ক্রেডিট করুন
J42161217


1

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 82 বাইট

x=>{int y=1;for(var s="";x>2;x-=2)for(s+=2*y+":";s.Contains(++y+""););return x*y;}

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

-AS বাইটস কেবলমাত্র এএসসিআইআইকে ধন্যবাদ!


সি # 8 আপাতত অনলাইন দোভাষীগুলিতে সাধারণ হতে খুব নতুন হতে পারে, সিএসআই একটি মনো জিনিস হিসাবে যুক্ত হয়েছে তাই আপনাকে মনোর এটি প্রয়োগ করার জন্য অপেক্ষা করতে হবে এবং এটি একটি স্থিতিশীল বিল্ডে যুক্ত করতে হবে (যদি এটি 'না' টি ইতিমধ্যে)
ASCII- কেবল

দুঃখিতভাবে এটা সহজ জন্য চেক করতে হয় এই C #
হওয়া ASCII শুধুমাত্র

এটি শুরু করতে ব্যবহার করবেন? তবে হ্যাঁ, সোজা জিনিস বলে মনে হয় না। ডকস.মাইক্রোসফট.ইন- ইউএস
দানা

1
86? - :তালিকার সর্বাধিক সংখ্যা হবেনা যেহেতু এসগুলির প্রয়োজন মনে করবেন না
এএসসিআইআই

এছাড়াও 2.0=>2f
দানা

0

Clojure, 102 বাইট

#(nth(loop[l[0 1 2 3]i %](if(= i 0)l(recur(conj l(*(last l)2)(nth(remove(set l)(range))0))(dec i))))%)

nসিকোয়েন্সটি তৈরির জন্য বারগুলি ভাটা করে এবং n1 তম তালিকাযুক্ত, আইটেমটি প্রদান করে।


0

রুবি, 60 বাইট

->n,*a{eval"v+=1while a[v];a[v]=a[2*v]=v+v*n%=2;"*(n/2+v=1)}

0-ইন্ডেক্স। আমরা n/2+1সময়গুলি লুপ করি , প্রতিবার দুটি মান উত্পন্ন করি এবং তাদের সূচকগুলিতে একটি অ্যারে বসিয়ে এগুলি সংরক্ষণ করি। v+v*n%2আউটপুট দেয়, হয় vবা v*2এর সমতা উপর নির্ভর করে n



0

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

একটি পুনরাবৃত্তি সমাধান।

n=>eval("for(s={},i=0;n;)s[++i]?0:(s[i+i]=--n)?--n?0:i+i:i")

কম গল্ফড

n=>{
  s = {}; //hashtable for used values
  for(i=0; n; )
  {
    if ( ! s[++i] )
    {
      s[i*2] = 1; // remember i*2 is already used
      if (--n)
        if (--n)
          0;
        else
          result = i*2;
      else
        result = i;
    }
  }
  return result;  
}

পরীক্ষা

F=
n=>eval("for(s={},i=0;n;)s[++i]?0:(s[i+i]=--n)?--n?0:i+i:i")

for (a=1; a < 50; a++)
  console.log(a,F(a))


0

জেলি , 13 12 10 বাইট

ḤRọ2ḂĠZFị@

এটি আমার পাইথন উত্তর থেকে পর্যবেক্ষণ ব্যবহার করে ।

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

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

ḤRọ2ḂĠZFị@  Main link. Argument: n

Ḥ           Unhalve; yield 2n.
 R          Range; yield [1, ... , 2n].
  ọ2        Compute the order of 2 in the factorization of each k in [1, ..., 2n].
    Ḃ       Bit; compute the parity of each order.
     G      Group the indices [1, ..., 2n] by the corresponding values.
      Z     Zip/transpose the resulting 2D array, interleaving the indices of 0
            with the indices of 1, as a list of pairs.
       F    Flatten. This yields a prefix of the sequence.
        ị@  Take the item at index n.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.