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


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.