फिर भी अप्रयुक्त जोड़े


21

चलो सकारात्मक पूर्णांक के एक अनुक्रम को परिभाषित करते हैं। हम पिछले संख्या को दोगुना करने के लिए सम संख्याओं पर अनुक्रम को परिभाषित करेंगे। अनुक्रम के विषम सूचकांक सबसे छोटे धनात्मक पूर्णांक होंगे जो अभी तक अनुक्रम में दिखाई नहीं दे रहे हैं।

यहाँ पहले युगल शब्द हैं।

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

आप इसे संक्षिप्त जोड़े (n, 2n) की सूची के रूप में भी सोच सकते हैं जहां n अब तक का सबसे कम अप्रयुक्त सकारात्मक पूर्णांक है।

कार्य

इस क्रम में n n पद की गणना के रूप में संख्या n को देखते हुए ।

यह इसलिए आपको अपने स्रोत कोड के आकार को न्यूनतम करने का लक्ष्य रखना चाहिए जैसा कि बाइट्स में मापा जाता है।

OEIS A036552


तथ्य यह है कि अनुक्रम के विषम सूचकांक सबसे छोटे सकारात्मक पूर्णांक होंगे जो अभी तक अनुक्रम में दिखाई नहीं दे रहे हैं। अप्रासंगिक है, है ना?
14

1
इसके अलावा, क्या जोड़े ?
14

@ Adám नहीं यह मामला नहीं है। मुझे यकीन नहीं है कि आपको क्या आभास मिलता है कि शायद मैंने इसे खराब तरीके से कहा है।
गेहूं जादूगर

1
@ अनुक्रम के बारे में सोचने का एक और तरीका यह है कि इसमें समसामयिक जोड़े शामिल हैं (n,2n)और प्रत्येक संख्या केवल एक बार दिखाई देती है। बाद वाली बाधा का पालन करते हुए प्रत्येक जोड़ी को सबसे छोटा संभव चुना जाता है।
मार्टिन एंडर

3
श्रृंखला के विषम तत्वों का 2-एडिक मूल्यांकन हमेशा भी होता है। किसी के लिए उपयोगी हो सकता है।
कैलक्यूलेटरफ़्लीन

जवाबों:


11

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

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

शून्य आधारित। lवृद्धिशील रूप से शेष पूर्णांक की एक आलसी सूची से अनुक्रम बनाता है।


7

जावास्क्रिप्ट (ईएस 6), 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={})

कैसे?

हम इस पर नज़र रखते हैं:

  • अंतिम सम्मिलित मान b
  • लुकअप तालिका में पहले से मौजूद सभी मानों में a

आंतरिक रूप से, हम 0-आधारित इंडेक्स i का उपयोग कर रहे हैं । अजीब और यहां तक ​​कि व्यवहार इसलिए उलटे हैं:

  • विषम स्थिति में, अगला मान बस है 2 * b

  • यहां तक कि पदों में, हम पुनरावर्ती क्रिया का उपयोग ग्राम () और लुकअप तालिका एक छोटी से छोटी मिलान मूल्य पहचानने के लिए:

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

कुछ बाइट्स को बचाने के लिए, मुझे{} इसके बजाय इनिशियलाइज़ किया जाता है 0। यह हमें उपयोग करने के लिए मजबूर करता है:

  • i^nक्योंकि मैं मूल्यांकन करता है, जबकि n के साथ तुलना करने के लिए ।({}) ^ n === n({}) - nNaN
  • -~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(...) लिए `{* ...} के साथ
रिप्लेस कर सकते हैं

@ Zacharý क्या आप मेरी टिप्पणी पर विश्वास कर रहे थे? यदि हां, तो पायथन 3 का एक सेट {*...}इसके बजाय हो सकता है set(...)
श्री Xcoder

मैं बिना सोचे-समझे टिप्पणी कर रहा था, मुझे कुछ ही क्षणों के बाद एहसास हुआ कि {...for...in...}बहुत अधिक बायोस होना चाहिए।
Zacharý

वास्तव में, यह 4 बाइट्स को बचाएगा, क्योंकि आप इसे दो बार उपयोग करते हैं
श्री एक्सकोडर



3

मैथिक्स , 56 53 बाइट्स

-3 बाइट्स धन्यवाद जंगवान मिन !

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

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

OEIS लिंक में दिए गए Mathematica अभिव्यक्ति के आधार पर।


1
इसके अलावा 53 बाइट्स:Nest[k=0;If[#~FreeQ~++k,#~Join~{k,2k},#]&,{},#][[#]]&
जुंगह्वान मिन

3

PHP , 64 बाइट्स

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

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

PHP , 77 बाइट्स

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

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

PHP , 78 बाइट्स

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

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



3

05AB1E , 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 पूर्णांक को n = 2 o (n) c (n) के रूप में विशिष्ट रूप से व्यक्त किया जा सकता है , जहां c (n) विषम है।

चलो ⟨a nn> 0 चुनौती कल्पना से अनुक्रम हो।

हम दावा करते हैं कि, सभी सकारात्मक पूर्णांकों के लिए n , o (a 2n-1 ) सम है। चूंकि ओ (एक 2 एन ) = ओ (2 ए 2 एन -1 ) = ओ (एक 2 एन -1 ) + 1 , यह दावा करने के बराबर है कि ओ ( 2 एन ) हमेशा विषम होता है।

दावे को झूठा मानें और 2m-1 को अनुक्रम का पहला विषम सूचकांक मान लें, जैसे o ( 2m-1 ) विषम है। ध्यान दें कि यह 2m अनुक्रम का पहला सम अनुक्रमणिका है जैसे o ( 2m-1 ) सम है।

ओ (एक 2 एम -1 ) विषम है और 0 हां, तो भी है एक 2 एम -1 से विभाज्य है 2 । परिभाषा के अनुसार, एक 2 एम -1 है सबसे छोटी सकारात्मक पूर्णांक अभी तक अनुक्रम में प्रदर्शित नहीं हो जिसका अर्थ है कि, एक 2 एम -1 / 2 के समक्ष पेश किया जाना चाहिए। चलो कश्मीर (प्रथम) के सूचकांक होना एक 2 एम -1 / 2 में एक

चूँकि o (a k ) = o (a 2m-1 /2) = o (a 2m-1 ) - 1 सम है, n का तात्पर्य यह है कि k विषम है। बदले में, इसका मतलब है कि एक k + 1 = 2 ए कश्मीर = एक 2 एम -1 , की परिभाषा का खंडन एक 2 एम -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][[#]])&

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


Mathematica में 58 बाइट्स (हालांकि मुझे शायद एक अलग उत्तर पोस्ट करना चाहिए क्योंकि विचार बहुत अलग है)।
नजगन

क्या आपने OEIS लिंक से कॉपी किया है?
J42161217

मैंने इसे कार्य को फिट करने और अधिक गोल्फ होने के लिए संशोधित किया, लेकिन यह कम या ज्यादा OEIS लिंक के समान है।
नॉटगन

1
@ यदि आप चाहते हैं और लेखक को श्रेय दें तो एक नया उत्तर न दें
15:42 पर J42161217


1

सी # (विज़ुअल सी # इंटरएक्टिव कंपाइलर) , 82 बाइट्स

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

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

-6 बाइट्स @ASCIIOnly को धन्यवाद!


C # 8 अब के लिए ऑनलाइन दुभाषियों पर आम होने के लिए बहुत नया हो सकता है, इस तथ्य में जोड़ा गया कि csi एक मोनो चीज़ है इसलिए आपको मोनो को लागू करने और इसे एक स्थिर बिल्ड में जोड़ने के लिए इंतजार करना होगा (यदि यह hasn है) t पहले से ही)
ASCII-only

दुर्भाग्य से यह नहीं आसान के लिए जाँच करने के लिए है इस सी # में
ASCII-केवल

इसे शुरू करने के लिए उपयोग करें? लेकिन हाँ, सीधी सी बात नहीं लगती। docs.microsoft.com/en-us/dotnet/api/…
dana

1
86? - नहीं लगता कि :s की जरूरत है क्योंकि यह सूची में सबसे बड़ी संख्या होगी
ASCII- केवल

इसके अलावा 2.0>>2f
दाना

0

क्लोजर, 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अनुक्रम को बनाने के लिए बार-बार बताता है और nवें आइटम को लौटाता है , 1-अनुक्रमित।


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

जावास्क्रिप्ट (ईएस 6), 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.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.