गैर-पेलिंड्रोमिक संख्या


16

एक कड़ाई से गैर-palindromic नंबर N एक ऐसी संख्या है जो किसी भी आधार में (आधार 2 से N-2 में) एक palindrome नहीं है । ये नंबर OEIS पर सूचीबद्ध हैं

उदाहरण के लिए, संख्या 19के आधार 2,3,4,5,6 में, ... 17 है: 10011, 201, 103,34 , 31, ... 12। इनमें से कोई भी प्रतिनिधित्व पैलिंड्रोमिक नहीं है, इसलिए संख्या कड़ाई से गैर-पैलिंड्रोमिक है।

इस चुनौती के लिए, आपको एक सत्य मान वापस करने की आवश्यकता है यदि संख्या नॉन-पैलिंड्रोमिक है, अन्यथा एक मिथ्या मान ।

  • आप मान सकते हैं कि आपके द्वारा दी गई संख्या 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 20

जवाबों:


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;}

Ideone यह!

व्याख्या

यह कोड 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
@RohanJhunjhunwala उत्थान के लिए सर्वश्रेष्ठ कारण।
— लीक नून

@LeakyNun लेकिन थोड़ा सा सीरियल वोटिंग ...
— एरिक द आउटग्राफर

5

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

n=input();b=1
while b<n-2:
 m=n;r=0;b+=1
 while m/(r!=n):r=r*b+m%b;m/=b

आउटपुट एक्ज़िट कोड के माध्यम से होता है , जहाँ 0 सत्य है और 1 मिथ्या है। Ideone पर इसका परीक्षण करें ।


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

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

सी में मेरे जवाब का पोर्ट ।


प्रत्येक उत्तर के लिए दो अपवोट्स रखें, क्योंकि मैं इसे दो बार नहीं बढ़ा सकता हूं
— रोहन झुनझुनवाला

pheraps यदि आप एक के रूप में एक अलग बयान का उपयोग कर कोड लिख सकते हैं "|" आप 2 char के बजाय 1 char लिखने में फायदा कमा सकते हैं \ n \
— _

@RosLuP क्या मैं अब \ n के रूप में \ r \ n का उपयोग कर रहा हूँ?
— लीक नून

मैं आपके sys में नहीं जानता, लेकिन मैं एक नोटपैड में प्रोग्राम के ऊपर कॉपी करता हूं, इसे बचाने के बजाय: उस फ़ाइल का
— लैंथ

@RosLuP आपका नोटपैड स्वचालित रूप से EOLs को \ 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

गणितज्ञ, ५hem ४३ बाइट्स

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

टीआईएल जो कि #~IntegerReverse~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)}

36 से ऊपर के किसी भी आधार के लिए टूट जाने के बाद से आधार का उपयोग नहीं किया जा सकता है।

पिछले प्रयास

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 =।
— ब्रैड गिल्बर्ट b2gills

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);}

पुनरावर्ती अभ्यास ... मैं बदल (b + 2> = n) के साथ (b + 3> n) whithout डिबगिंग ...

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
अपनी पोस्टों के साथ बर्बरता न करें।
— DJMcMayhem 17

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।


अगर मैं इस अधिकार को देखता हूं तो आप केवल n <39
— Jörg Hülsermann

0

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