আপনার সমস্ত বেস প্যালিনড্রমিক আমাদের অন্তর্ভুক্ত


20

প্যালিনড্রোম ( OEIS A126071 ) এমন ঘাঁটিরn ক্রম সংখ্যা তৈরি করুন ।

বিশেষ করে, ক্রম অনুসরণ করে হিসাবে সংজ্ঞায়িত করা হয়: একটি নম্বর দেওয়া n, বেস এটা প্রকাশ করার aজন্য a = 1,2, ..., n, এবং গণনা কিভাবে এই এক্সপ্রেশন অনেক palindromic হয়। "প্যালিনড্রমিক" aএক্সপ্রেশনটির বেস-অঙ্কগুলি পারমাণবিক ইউনিট হিসাবে রূপান্তর করার ক্ষেত্রে বোঝা যায় (ধন্যবাদ, @ মার্টিন বাটনার )। উদাহরণ হিসাবে বিবেচনা করুন n= 5:

  • a=1: অভিব্যক্তিটি হল 11111: প্যালিনড্রোমিক
  • a=2: অভিব্যক্তিটি হল 101: প্যালিনড্রোমিক
  • a=3: অভিব্যক্তিটি হল 12: প্যালিনড্রমিক নয়
  • a=4: অভিব্যক্তিটি হল 11: প্যালিনড্রোমিক
  • a=5: অভিব্যক্তিটি হল 10: প্যালিনড্রমিক নয়

অতএব এর ফলাফল n=5হল 3। নোট করুন যে ওইআইআইএস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, ...

ইনপুটটি ইতিবাচক পূর্ণসংখ্যা nnঅনুক্রমের প্রথম শর্ত আউটপুট ।

nকোনও অভ্যন্তরীণ গণনার ক্ষেত্রে আপনার ডিফল্ট ডেটা টাইপের কারণে সীমাবদ্ধতার জন্য প্রোগ্রামটি তাত্ত্বিকভাবে (পর্যাপ্ত সময় এবং মেমরি দেওয়া) কাজ করা উচিত ।

সমস্ত ফাংশন অনুমোদিত। সর্বনিম্ন সংখ্যা বাইট জিতেছে।



1
যদি এটি কারও পক্ষে সহায়ক হয় তবে এটি লক্ষণীয় যে একটি সংখ্যা এনও সর্বদা বেস এন -1 এ প্যালিনড্রমিক হয়।
কমপুট্রোনিয়াম

এটি এ 126071
তিতাস

উত্তর:


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

এমএটিএল , 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

ES6, 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

জাভাস্ক্রিপ্ট (ES6), 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>


এটিকে পুনরাবৃত্ত ফাংশনে পরিণত করার কোনও উপায় আছে কি? আমি মনে করি এটি কিছু বাইট সংরক্ষণ করতে পারে।
মামা ফান রোল

@ ՊՓԼՃՐՊՃՈԲՍԼ আপনি ঠিক বলেছেন। টিপ জন্য ধন্যবাদ.
ব্যবহারকারী81655




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 বাইট

-V পতাকাটির জন্য +2

: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

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