অ-প্যালিনড্রমিক সংখ্যা


16

একটি কঠোরভাবে নন-প্যালিনড্রমিক নম্বর এন এমন একটি সংখ্যা যা কোনও বেসে প্যালিনড্রোম নয় (ঘাঁটি 2 থেকে এন -2)। এই সংখ্যাগুলি ওইআইএস-এ তালিকাভুক্ত

উদাহরণস্বরূপ, সংখ্যা 19বেস 2,3,4,5,6 মধ্যে ... 17: 10011, 201, 103, 34, 31, ... 12। এই উপস্থাপনগুলির কোনওটিই প্যালেন্ড্রোমিক নয়, সুতরাং সংখ্যাটি কঠোরভাবে অ-প্যালিনড্রোমিক।

এই প্রতিদ্বন্দ্বিতায় জন্য, আপনি প্রয়োজন , অন্যথায় একটি falsy মান একটি truthy মান যদি সংখ্যা অ palindromic হয়

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

পরীক্ষার কেস:

Truthy:

0
1
2
3
4
6
11
19
47
53
79
103
389
997
1459

Falsy:

5
7
8
9
10
13
16
43
48
61
62
101
113
211
1361

এটি একটি , সুতরাং আপনার উত্তরগুলি যত তাড়াতাড়ি সংক্ষিপ্ত করুন!


2
হ্যাঁ, আমি এটি মিস করেছি। তবে, এই চ্যালেঞ্জের উত্তরগুলি result < n-2তাদের চেক যুক্ত করে মূলত পুনরায় ব্যবহার করা যেতে পারে বলে আমি মনে করি।
FryAmTheEggman

উত্তর:


6

সি, 82 বাইট

p(n,a,b,c,r){c=0;for(b=1;++b<n-2;c+=r==n)for(a=n,r=0;a>0;a/=b)r=r*b+a%b;return!c;}

আইডিয়ন!

ব্যাখ্যা

এই কোড nবেসে বিপরীতb এবং হয় r:

for(a=n,r=0;a>0;a/=b)r=r*b+a%b;

বাইরের লুপটি থেকে ঘাঁটির সংখ্যা গণনা করে 2 করার জন্য n-1যা nএকটি যে শব্দ কবিতা প্রভৃতি উলটা করিয়া পড়িলেও একই থাকে হয়।

যদি nঅ-প্যালিনড্রোমিক হয় তবে গণনাটি হবে 1( nবেসে অবশ্যই একটি প্যালিনড্রোম হতে হবে n-1)।


একটি উত্সাহ দিন কারণ আমি সিলোস উত্তরটি দু'বার উপস্থাপন করতে পারিনি
রোহান ঝুনঝুনওয়ালা

3
@ রোহানঝুনঝুনওয়ালা সর্বকালের উত্সাহ দেওয়ার সর্বোত্তম কারণ।
লিকি নুন

@ লেকিউন তবে কিছুটা সিরিয়াল ভোটদান ...
এরিক দ্য আউটগল্ফার


5

সিলোস , 206 বাইট

GOTO e
lbld
c - 1
GOTO c
lble
readIO 
n = i
i - 3
b = i
b + 1
GOTO f
lbla
a = n
r = 0
lblb
m = a
m % b
r * b
r + m
a / b
if a b
r - n
r |
if r d
lblc
c + 1
i - 1
b - 1
lblf
if i a
c / c
c - 1
c |
printInt c

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

সি আমার উত্তর পোর্ট ।


প্রতিটি উত্তরের জন্য একটি করে দুটি উচ্চমানের পদক্ষেপ নিন, কারণ আমি এটি দুবার উপস্থাপন করতে পারি না
রোহান ঝুনঝুনওয়ালা

"|" হিসাবে একটি পৃথকীকরণের বিবৃতি ব্যবহার করে আপনি কোডটি লিখতে পারেন তবে ফেরাপস আপনি বিচ্ছেদ বিবৃতি হিসাবে \ n হিসাবে \ 13 char 10 এর 2 চরের পরিবর্তে 1 চর লেখার সুবিধা নিতে পারেন
রোজলুপি

@ রোসলুপ আমি কি এখন \ r \ n হিসাবে using n হিসাবে ব্যবহার করছি?
লিকি নুন

আমি আপনার সিস্টেমে জানি না, তবে এটি সংরক্ষণের চেয়ে আমি একটি নোটপ্যাডে উপরের প্রোগ্রামটি অনুলিপি করি: সেই ফাইলটির দৈর্ঘ্য 241 নয় 206 so তাই এখানে আমার কাছে মনে হয় \ n 2 টি নয়, 1
রোজলুপি

@ রসলুপি আপনার নোটপ্যাড স্বয়ংক্রিয়ভাবে EOL গুলি \ r \ n এ রূপান্তর করেছে।
লিকি নুন


3

জেলি , 9 বাইট

bRµ⁼"US<3

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

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

bRµ⁼"US<3  Main link. Argument: n

 R         Range; yield [1, ..., n].
b          Convert n to all bases between 1 and n, yielding a 2D array A>
  µ        Begin a new, monadic chain. Argument: A
     U     Upend; reverse the 1D arrays in A.
   ⁼"      Zipwith equal; yield 1 for each array that matches its inverse.
      S    Sum; add the resulting Booleans.
           If n > 1, the sum will be 2 if n is strictly non-palindromic (it is only
           a palindrome in bases 1 and n - 1), and greater than 2 otherwise.
           For 0 and 1, the sum will be 0 (sum of the empty array) and 1 (only a
           palindrome in base 1); both are less than 2.
       <3  Compare the sum with 3, yielding the desired Boolean.

জন্য +1 <3
লিকি নুন

2

গণিত, 58 43 বাইট

!Or@@Table[#==#~IntegerReverse~i,{i,2,#-2}]&

টিআইএল যা #~IntegerReverse~iবেস i তে লেখার সময় ইনপুটটির অঙ্কগুলি উল্টে দেয়।


2

পাইথ, 12 10 বাইট

ডেনিসের কৌতুক দিয়ে দুটি বাইট সংরক্ষণ করেছেন।

>3sm_IjQdS

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

ব্যাখ্যা:

         S (Q)   Get all the bases we need by building a list from 1 to Q
   m               For all bases d in the bases list:
      jQd           cast Q to base d as a list
    _I              and check to see if the list is palindromic (invariant on reversal)
                  Compile all the results back into a list
  s                Sum the results (a shorter form of any), gives 3 or more for palindromics 
                    (2 is the usual because of bases 1 and Q-1)
>3                 And verify that the sum is greater than three to get non-palindromics


1

পার্ল 6, 110 72 65

my &f={?all(map {{.reverse ne$_}(@(.polymod: $^a xx*))},2..$_-2)}

৩ base এর উপরে যে কোনও বেসের জন্য এটি ভেঙে গেছে তাই বেস ব্যবহার করতে পারেনি।

পূর্ববর্তী প্রচেষ্টা

my &a={$^a??flat($a%$^b,a($a div$b,$b))!!()};my &f=-> $n {?all(map {.reverse ne$_ given @(a($n,$_))},2..$n-2)}
my &f=->\n {?all(map {.reverse ne$_ given @(n.polymod: $_ xx*)},2..n-2)}

আমি আমার প্রথম চেষ্টা করে এটি 59 বাইটে নামিয়ে আনতে সক্ষম হয়েছি। .polymodবিভাজকের অসীম তালিকার সাথে ইঙ্গিত ব্যবহার । 1362.polymod: 226 xx *
ব্র্যাড গিলবার্ট বিগগিল

এটি 53 এবং অন্য একটি ইঙ্গিত করুন {...}এবং -> $_ {...}প্রায় একই। এছাড়াও আপনাকে ল্যাম্বদা কোথাও সংরক্ষণ করতে হবে না যাতে আপনি এটি সরাতে পারেন my &f =
ব্র্যাড গিলবার্ট বিগগিল

1

ব্র্যাচল্যাগ , 14 বাইট

¬{⟦₆bk∋;?ḃ₍.↔}

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

পূর্বাভাস সাফল্য বা ব্যর্থতার আউটপুট, যা প্রিন্ট করে true.বা false.যদি প্রোগ্রাম হিসাবে চালানো হয়।

¬{           }    It cannot be shown that
        ?         the input
       ; ḃ₍       in a base
      ∋           which is an element of
  ⟦₆              the range from 1 to the input - 1
    b             without its first element
     k            or its last element
           .      can be unified with both the output variable
            ↔     and its reverse.

0

সি, 77 বাইট

h(n,b,k,z){for(z=0,k=n;z+=k%b,k/=b;z*=b);return b+3>n?1:z==n?0:h(n,++b,0,0);}

পুনরাবৃত্তিমূলক অনুশীলন ... আমি ডিবাগিং ছাড়াই (বি + 3> এন) (বি + 2> = এন) পরিবর্তন করি ...

main()
{int  v[]={0,1,2,3, 4, 6,11,19,47,53,79,103,389,997,1459},
  n[]={5,7,8,9,10,13,16,43,48,61,62,101,113,211,1361}, m;
    // 0 1 2 3  4  5  6  7  8  9 10  11  12  13   14
 for(m=0; m<15; ++m)
    printf("%u=%u\n", v[m], h(v[m],2,0,0));
 for(m=0; m<15; ++m)
    printf("%u=%u\n", n[m], h(n[m],2,0,0));
}

/*
 77
 0=1
 1=1
 2=1
 3=1
 4=1
 6=1
 11=1
 19=1
 47=1
 53=1
 79=1
 103=1
 389=1
 997=1
 1459=1
 5=0
 7=0
 8=0
 9=0
 10=0
 13=0
 16=0
 43=0
 48=0
 61=0
 62=0
 101=0
 113=0
 211=0
 1361=0
*/

1
আপনার পোস্ট ভাঙচুর করবেন না।
ডিজেএমসিএমহেম

0

সি, 129 বাইট

f(n,b,k,j){int a[99];for(b=2;b+2<n;++b){for(j=0,k=n;a[j]=k%b,k/=b;++j);for(;k<j&&a[k]==a[j];++k,--j);if(k>=j)return 0;}return 1;}

0

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

for($b=$argn;--$b;)strrev($c=base_convert($argn,10,$b))!=$c?:die(1);

এসটিডিআইএন থেকে ইনপুট নেয়, 1সত্যের জন্য মিথ্যা জন্য প্রস্থান করে 0। সাথে চালাও -R


আমি যদি এই অধিকারটি দেখতে পাই তবে আপনি কেবলমাত্র <<39
জার্গ হালসারম্যান

0

এপিএল (এনএআরএস), অক্ষর 47, বাইট 94 94

{⍵≤4:1⋄∼∨/{⍵≡⌽⍵}¨{⍵{(⍺⍴⍨⌊1+⍺⍟⍵)⊤⍵}w}¨2..¯2+w←⍵}

{(⍺⍴⍨⌊1+⍺⍟⍵)⊤⍵}অঙ্ক সংখ্যা বেস আলফা যেখানে ফাংশন রূপান্তর হবে একটি ইতিবাচক ওমেগা, এবং {⍵≡⌽⍵}ফাংশন চেক প্যালিনড্রোম হবে ... পরীক্ষা:

  f←{⍵≤4:1⋄∼∨/{⍵≡⌽⍵}¨{⍵{(⍺⍴⍨⌊1+⍺⍟⍵)⊤⍵}w}¨2..¯2+w←⍵}
  f¨0 1 2 3 4 6 11 19 47 53 79 103 389 997 1459
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
  f¨5 7 8 9 10 13 16 43 48 61 62 101 113 211 1361
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.