आपके सभी आधार पलिंडिक हमारे हैं


20

आधारोंn की अनुक्रम संख्या उत्पन्न करें जिसमें एक तालुका ( OEIS A126071 ) है।

विशेष रूप से, अनुक्रम को निम्नानुसार परिभाषित किया गया है: एक संख्या दी गई है n, इसके aलिए आधार में व्यक्त करें a = 1,2, ..., n, और गिनें कि उनमें से कितने अभिव्यक्तियाँ हैं। "पैलिंड्रोमिक" aको परमाणु इकाइयों के रूप में अभिव्यक्ति के आधार- अंकों को उलटने के संदर्भ में समझा जाता है (धन्यवाद, @ मर्टिन ब्यूटनर )। एक उदाहरण के रूप में, विचार करें n= 5:

  • a=1: अभिव्यक्ति है 11111: palindromic
  • a=2: अभिव्यक्ति है 101: palindromic
  • a=3: अभिव्यक्ति है 12: पैलिंड्रोमिक नहीं
  • a=4: अभिव्यक्ति है 11: palindromic
  • a=5: अभिव्यक्ति है 10: पैलिंड्रोमिक नहीं

इसलिए के लिए परिणाम n=5है 3। ध्यान दें कि OEIS के 2, ..., n+1बजाय अड्डों का उपयोग करता है 1, ..., n(धन्यवाद, @ बीकर )। यह समतुल्य है, क्योंकि आधार में भाव 1और n+1हमेशा तालबद्ध होते हैं।

अनुक्रम के पहले मूल्य हैं

 1, 1, 2, 2, 3, 2, 3, 3, 3, 4, 2, 3, 3, 3, 4, 4, 4, 4, 2, 4, 5, ...

इनपुट एक सकारात्मक पूर्णांक है n। आउटपुट nअनुक्रम की पहली शर्तें है।

nकिसी भी आंतरिक संगणना में आपके डिफ़ॉल्ट डेटा प्रकार के कारण होने वाली सीमाओं के लिए कार्यक्रम को सैद्धांतिक रूप से काम करना चाहिए (पर्याप्त समय और मेमोरी देना) ।

सभी कार्यों की अनुमति दी। सबसे कम संख्या बाइट्स जीतती है।



1
यदि यह किसी के लिए उपयोगी है, तो यह ध्यान देने योग्य है कि आधार n-1 में एक नंबर n भी हमेशा palindromic है।
Computronium

जवाबों:


9

पायथ, 13 बाइट्स

mlf_ITjLdSdSQ

इस की संक्षिप्तता ज्यादातर I" Invariant" आदेश के कारण होती है।

msf_ITjLdSdSQ       implicit: Q=input
m         d         map lambda d over
           SQ       Inclusive range 1 to Q
      jLdSd         Convert d to all the bases between 1 and d
  f                  filter lambda T:
   _IT                 is invariant under reverse
 l                  number that are invariant under reverse

तो Trueके लिए एक स्वीकार्य उत्पादन होता है 1, msm_IjdkSdSQ(12 बाइट्स) काम करता है।

इसे यहाँ आज़माएँ ।


2
FryAmTheEggman का उपयोग करने के _I#बजाय सुझाव देखें f_IT(मुझे यकीन है कि यह उपलब्ध नहीं था 100% है, लेकिन ऐसा लगता है )।
जोनाथन एलन

7

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

bR‘$µ=UP€S
RÇ€

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

गैर-प्रतिस्पर्धी संस्करण

जेली दुभाषिया के पास एक बग था जो कि असंभव को असंभव में परिवर्तित करता था। यह अब तय किया गया है, इसलिए निम्न कोड ( 12 बाइट्स ) भी हाथ में काम पूरा करता है।

bRµ=UP€S
RÇ€

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

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

bR‘$µ=UP€S  Helper link. Argument: z

 R‘$        Apply range and increment, i.e., map z to [2, ..., z + 1].
            In the non-competing version R simply maps z to [1, ... z].
b           Convert z to each of the bases to the right.
    µ       Begin a new, monadic chain. Argument: base conversions
     =U     Compare the digits of each base with the reversed digits.
            = has depth 0, so [1,2,3]=[1,3,3] yields [1,0,1].
       P€   Take the product of the innermost arrays.
         S  Sum all resulting Booleans.


RÇ€         Main link. Argument: n

R           Yield [1, ..., n].
 ǀ         Apply the helper link to each.

4

MATL , 19 20 बाइट्स

:"0@XK:Q"K@:YAtP=A+

वर्तमान रिलीज़ (10.1.0) का उपयोग करता है , जो इस चुनौती से पहले है।

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

व्याख्या

:            % vector [1,2,...,N], where "N" is implicit input
"            % for each number in that vector
  0          % push 0
  @          % push number 1,2,...N corresponding to current iteration, say "n" 
  XK         % copy n to clipboard
  :Q         % vector [2,3,...,n+1]
  "          % for each number "m" in that vector
    K        % push n
    @:       % vector [1,2,...,m]
    YA       % express n in base m with symbols 1,2,...,m
    tP       % duplicate and permute
    =A       % 1 if all entries are equal (palindrome), 0 otherwise
    +        % add that number
             % implicitly close the two loops and display stack contents


1

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

a!b|a<b=[a]|1>0=mod a b:(div a b)!b
f n=[1+sum[1|x<-[2..y],y!x==reverse(y!x)]|y<-[1..n]]

1

ईएस 6, 149 बाइट्स

n=>[...Array(n)].map((_,i)=>[...Array(i)].reduce((c,_,j)=>c+(''+(a=q(i+1,j+2,[]))==''+a.reverse()),1),q=(n,b,d)=>n<b?[n,...d]:q(n/b|0,b,[n%b,...d]))

अड्डों के लिए काम करता है> 36 भी।


1

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

f=(n,b)=>b?b<2?1:f(n,b-1)+([...s=n.toString(b)].reverse().join``==s):n<2?[1]:[...f(n-1),f(n,n)]

व्याख्या

1 से 36 तक की संख्या लेता है (जावास्क्रिप्ट में आधार रूपांतरण की सीमा) और अनुक्रम की एक सरणी देता है।

रिकर्सिव फ़ंक्शन जो एक बेस पास होने पर पलिंड्रोम्स की जांच करता है, अन्यथा सिर्फ़ nपास होने पर अनुक्रम लौटाता है।

f=(n,b)=>

  // Base palindrome checking
  b?
    b<3?1:                 // return 1 for base-1, since toString(2)
    f(n,b-1)+(             // return the sum of all lower bases and check  this
      [...s=n.toString(b)] // s = n in base b
      .reverse().join``==s // add 1 if it is a palindrome
    )

  // Sequence generation
  :
    n<2?[1]:               // return 1 for the first value of the sequence
    [...f(n-1),f(n,n)]     // return the value for n after the previous values

परीक्षा

var solution = f=(n,b)=>b?b<2?1:f(n,b-1)+([...s=n.toString(b)].reverse().join``==s):n<2?[1]:[...f(n-1),f(n,n)]
<input type="number" oninput="result.textContent=solution(+this.value)" />
<pre id="result"></pre>


वहाँ एक तरीका है कि एक पुनरावर्ती समारोह में बारी है? मुझे लगता है कि कुछ बाइट्स बचा सकता है।
मामा फन रोल

@ Right आप सही कह रहे हैं। पारितोषिक के लिए धन्यवाद।
14:81 पर user81655




1

पायथन 2, 97 बाइट्स

c=1;n=int(input())
for b in range(2,n):
	a=[];z=n
	while z:a+=[z%b];z//=b
	c+=a[::-1]==a
print c

मेरा पहला पायथन पोस्ट, वास्तव में मेरा पहला पायथन कोड
शायद कुछ गोल्फ की क्षमता है।

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


1

> <>, 197 + 2 बाइट्स

+2 -v ध्वज के लिए

:1+0v    ;n\
1\  \$:@2(?/
:<~$/?)}:{:*}}@:{{
\   \~0${:}
>$:@1(?\::4[:&r&r]:$&@@&%:&@&$@-$,5[1+{]$~{{:@}}$@,$
~~1 \  \
?\~0>$:@2(?\$1-:@3+[}]4[}1-]=
 \  /@@r/!?/
r@+1/)0:<
  /?/$-1$~<
~$/       \-1

tio.run n> 1 के लिए कोई आउटपुट नहीं देता है, लेकिन आप इसे https://fishlanguage.com पर सत्यापित कर सकते हैं । इनपुट "इनिशियल स्टैक" बॉक्स में जाता है।



1

पायथन 2 , 85 बाइट्स

def f(a):b,c=2,0;exec'd,m=[],a\nwhile m:d+=[m%b];m/=b\nc+=d[::-1]==d;b+=1;'*a;print c

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

पूर्णांक को एक तर्क के रूप में अपेक्षित करता है।

स्पष्टीकरण:

# named function
def f(a):
    # initialize variable to track base (b) and to track palindromes (c)
    b,c=2,0
        # construct code
        '
        # initialize variable to store remainders (m) and to track divisor (d)
        m,d=[],a
        # while d is not zero,
        # add the current remainder to the array
        # and divide d by the base and assign the result back to d
        while d:m+=[m%b];d/=b
        # False == 0 and True == 1, so add 1 to total if m == reversed(m)
        c+=m[::-1]==m;
        # increment base
        # terminate with ; so that next statement can be executed separately
        b+=1;
        '
    # execute constructed statement (a) times
    exec'....................................................'*a
    # print result
    print c
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.