बाइनरी प्राइम-चंक्स


19

हम एक सीक्वेंस खोज रहे हैं

प्राकृतिक संख्याओं को लें
1,2,3,4,5,6,7,8,9,10,11,12,13,14...

बेस -2 में कन्वर्ट करें
1,10,11,100,101,110,111,1000,1001,1010,1011,1100,1101,1110...

उपरोक्त संख्याओं को समेटें
110111001011101111000100110101011110011011110...

प्राइम-चंक्स में इस संख्या को विभाजित करना
(अंकों की एक प्रमुख संख्या वाले भाग)
को पूर्ववर्ती क्रम में लिया जाता है2,3,5,7,11,13,17...

[11][011][10010][1110111][10001001101][0101111001101][1110...]

और प्रत्येक चंक के अंकों का योग खोजें

Primes 2 3 5 7 11 13 17
Chunks [11][011][10010][1110111][10001001101][0101111001101][1110...]
SumOfDigits 2 2 2 6 5 8

क्रम

2, 2, 2, 6, 5, 8, 9, 10, 14, 22, 11, 18, 25, 27, 32, 21, 28, 32, 40, 40, 49, 49, 32, 41, 49, 49 53, 63, 55, 63, 70, 87, 73, 51, 63, 71, 78, 78, 90, 107, 86, 96, 108, 115, 128, 138, 92, 83, 95, 102, 110, 110 130, 106, 122, 141, 149, 163, 130, 140, 151, 165, 181, 165, 204, 200, 234, 100, 130, 138, 167, 149, 169, 180, 209, 166, 189, 189 194, 222, 205, 234, 260, 216, 206, 217, 241, 240, 267, 289, 242, 274, 308, 286, 329, 338, 155, 189, 225, 197, 240, 272, 217 254, 282, 287, 317, 281, 256, 299, 286, 331, 337, 316, 350, 354, 391, 367, 282, 327, 313, 364, 358, 348, 398, 407, 466 ...

चुनौती

खोजो nthउपरोक्त अनुक्रम का शब्द कीजिए

इनपुट

पूर्णांक n>0

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

1->2   
3->2    
6->8    
36->78 
60->165    
160->581     
260->1099    
350->1345

यह कोडगॉल्फ है। बाइट्स जीत में मजबूत जवाब!


2
संबंधित (पहले तीन चरण समान हैं)
लैकोनी

4
नीचा दिखाया क्योंकि यह बहुत अधिक लगता है जैसे चुनौतियों का एक गुच्छा एक साथ मैश्ड।
फल

जवाबों:



6

जेली , 12 बाइट्स

RÆNµSRBFṁRṪS

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

यह काम किस प्रकार करता है

RÆNµSRBFṁRṪS  Main link. Argument: n

R             Range; yield [1, ..., n].
 ÆN           N-th prime; yield P := [p(1), ..., p(n)].
   µ          Begin a new, monadic chain with argument P.
    S         Take the sum of P, yielding s := p(1) + ... + p(n).
     R        Range; yield [1, ..., s].
      B       Binary; convert all integers from 1 to s to base 2.
       F      Flatten the resulting array.
         R    Range; yield [[1, ..., p(1)], ..., [1, ..., p(n)]].
        ṁ     Mold; reshape the result to the left like the result to the right.
          Ṫ   Tail; take the last chunk.
           S  Take the sum, counting the set digits.

5

05AB1E , 12 बाइट्स

कोड

बड़ी संख्या के लिए बहुत धीमी गति से प्राप्त कर सकते हैं:

ÅpDOLbJs£`SO

05AB1E -encoding का उपयोग करता है । इसे ऑनलाइन आज़माएं!

व्याख्या

Åp              # Get a list of the first <input> primes
  DO            # Duplicate and sum the primes
    L           # Create the list [1, .., <sum>]
     bJ         # Convert to binary and join into a single string
       s£       # Get the slices [a[0:2], a[2:2+3], a[2+3:2+3+5], a[2+3+5:2+3+5+7], ...] 
                  corresponding to the list of primes
         `SO    # Get the last one and sum up it's digits



2

जेली , 16 बाइट्स

RBFṁ
RÆNSÇṫÆNC$S

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

व्याख्या

RBFṁ  Helper link. Input: integer k
R     Range, [1, 2, ..., k]
 B    Convert each to a list of its binary digits
  F   Flatten
   ṁ  Shape it to length k

RÆNSÇṫÆNC$S  Main link. Input: integer n
R            Range, [1, 2, ..., n]
 ÆN          Get i'th prime for each
   S         Sum
    Ç        Call helper link
         $   Monadic chain
      ÆN       Get n'th prime
        C      Complement, 1 - n'th prime
     ṫ       Tail, take the last n'th prime digits
          S  Sum

2

आर , 206 200 बाइट्स

function(n){a=p=j=y=2
for(i in 2:n-1){while(sum(y)<4*a){x=as.double(rev(intToBits(j)))
y=c(y,x[cumsum(x)>0])
j=j+1}
b=1:a
y=y[-b]
z=outer(k<-b+a,p,'%%')
p=c(a<-k[!apply(z<1,1,sum)][1],p)}
sum(y[1:a])}

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

एल्गोरिदम अंतरिक्ष में चलने वाले बिट्स को हटाकर अंतरिक्ष में "बचाने" की भी कोशिश करता है क्योंकि यह primes के माध्यम से चक्र करता है। मुझे लगता है कि बिट रूपांतरण का दशमलव शायद कम हो सकता है, लेकिन मैं अन्य विकल्पों का पता नहीं लगा सकता।

जोनाथन फ्रांसीसी के लिए 6 बाइट्स धन्यवाद सहेजे।


1
मुझे लगता है कि आर जंजीर असाइनमेंट का समर्थन करता है; p=j=2दो बाइट्स से छोटा है p=2;j=2
जोनाथन फ्रीच

... जो शायद a=pएक और दो बाइट्स को बचाने के लिए भी किया जा सकता है ।
जोनाथन फ्रीच

1
... और मुझे नहीं पता कि क्यों - यह भी 200 बाइट्स के परिणामस्वरूप, के y=1साथ काम करने के लिए लगता है । y=2
जोनाथन फ्रेच

धन्यवाद। Y = 2 अंक के लिए बिट की जगह लेता है। 1. यह काम करता है क्योंकि n> 1 के लिए, यह पहले पुनरावृत्ति पर दूर चला जाता है, और n = 1 के लिए, लूप पीछे की ओर झुकता है, इस प्रकार n = 3 के लिए उत्तर प्रदान करता है, जो अभी भी 2 है (भाग्य का बुरा नहीं है)।
NofP

2

जावास्क्रिप्ट (ईएस 6), 144 बाइट्स

n=>eval("s=o=j=0;for(i=p=1;n;d>p&&(n--,s+=p))for(p++,d=2;p%d++;);while(b=Math.log2(++j)+1|0,i<=s)for(x=0;x++<b&i<=s;)o+=i++>s-p&&j<<x&1<<b?1:0")

Ungolfed

n=>{
    s=o=j=0;
    for(i=p=1;n;d>p&&(n--,s+=p))
        for(p++,d=2;p%d++;);
    while(b=Math.log2(++j)+1|0,i<=s)
        for(x=0;x++<b&i<=s;)
            o+=i++>s-p&&j<<x&1<<b?1:0
    return o
}

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



2

जावास्क्रिप्ट (ईएस 6), 138 132 123 बाइट्स

N=>(n=k=1,g=s=>N?g((P=n=>n%--x?P(n):x<2)(x=++n)?s[n]?s.slice(--N&&n,n/!N):s+(n--,k++).toString(2):s):s.split`1`.length-1)``

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

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

डेमो

NB: केवल 'सुरक्षित' परीक्षण मामलों को यहां शामिल किया गया है (क्रोम, फ़ायरफ़ॉक्स और एज पर काम करने की गारंटी)। दूसरे को पास करने के लिए आपको अपने इंजन के कॉल स्टैक का आकार बढ़ाना पड़ सकता है।

प्रारूपित और टिप्पणी की गई

N => (                            // given N = index of the expected term
  n = k = 1,                      // n = current prime, k = current natural number
  g = s =>                        // g = recursive function taking s = binary string
    N ?                           //   if we haven't reached the correct chunk yet:
      g(                          //     do a recursive call to g():
        (P = n =>                 //       P() returns: true for prime
          n % --x ? P(n) : x < 2) //                    false for composite
        (x = ++n) ?               //       increment n; if n is prime:
          s[n] ?                  //         if s is long enough:
            s.slice(--N && n,     //           either remove this chunk (if N > 0)
                    n / !N)       //           or truncate it to the correct size (if N = 0)
          :                       //         else:
            s + (n--, k++)        //           append the next natural number to s
                .toString(2)      //           in binary format
        :                         //       else:
          s                       //         just look for the next prime
      )                           //     end of recursive call
    :                             //   else:
      s.split`1`.length - 1       //     return the number of 1's in the last chunk
)``                               // initial call to g() with an empty string

1

पर्ल 6 , 67 बाइट्स

{(1..*).map(|*.base(2).comb).rotor(grep *.is-prime,2..*)[$_-1].sum}

झसे आज़माओ

विस्तारित:

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

  (

    1 .. *                # Range of all numbers starting with 1

  ).map(

    # WhateverCode lambda
    |                     # Slip each of these values into the outer list individually
      *                   # this is the parameter
      .base(2)            # convert base
      .comb               # split into digits


  ).rotor(                # split into chunks

    grep *.is-prime, 2..* # the sequence of prime numbers


  )[ $_ - 1]              # index into it using 1 based indexing

  .sum                    # find the sum
}

1

पायथन 2 , 143 139 133 बाइट्स

-4 बाइट्स @ErikTheOutgolfer के लिए धन्यवाद

s='1';i=x=1
exec"s=s[i:];i+=1\nwhile~-all(i%x for x in range(2,i)):i+=1\nexec's+=bin(x)[2:];x+=1;'*i;"*input()
print s[:i].count('1')

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


असंगत परीक्षण हार्नेस को हटाकर -2 बाइट्स । कुछ सामान को पुनर्व्यवस्थित करके एक और -2
आउटगॉल्फ

@EriktheOutgolfer बहुत बहुत धन्यवाद। मैं अभी भी अपने पुराने परीक्षणों को वापस जोड़ने में सक्षम था।
अंडाशय

1

जे, 48 बाइट्स

([:+/-@{:{.+/{.[:}:[:(#:@[,])/1+[:i.1++/)@:p:@i.

व्याख्या की

(                                                         )@:p:@i.  the first n primes, passed to...
       -@{: {.                    ...                               take "nth prime" elements from the tail of...
               +/                                                   sum the first n primes and...
                  {.                                                take that number of elements from...
                     [: }:                                          all but the last element of...   <----------------<
                                          1 + [: i. 1 + +/          sum first n primes, add 1 (so we have enough      |
                                                                    for case n=1) -- make that many natural numbers   |
                           [: (#:@[ , ])/                           reduce them by turning into lists of binary       |
                                                                    digits and catting, however the rightmost number  |
                                                                    won't get reduced, hence the need for ------------^
([: +/                                                              and sum those digits

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


कुंजी का उपयोग करके 30 बाइट्स ( /.):_1({]+//.$$&;<@#:@#\)[:#~p:@i.
मील

सुपर चालाक। धन्यवाद मी।
योना

0

जावास्क्रिप्ट 1+ + रूट, 135 बाइट्स

for(n=prompt(s=P=0),i=n*n*n*8;--i;)s=i.toString(2)+s;for(p=1;n;e=j?s:--n?P+=p:s.substr(P,p))for(j=p++;p%j--;);eval([].join.call(e,'+'))

"4" से आपका क्या तात्पर्य है? क्या आप संस्करण के अनिश्चित हैं? आपके शरीर में क्या मतलब है इस पर विस्तार करने से इस पोस्ट को बेहतर बनाने में मदद मिलेगी।
FryAmTheEggman

मुझे पता है कि यह तब चलता है जब JS5 नहीं आया था, लेकिन निश्चित रूप से नहीं जब
l4m2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.