N bazında palindrom olan sayılar


10

Negatif olmayan bir tamsayı göz önüne alındığında , tabanın olabileceği tam olarak farklı bazlarda palindrom n >= 0olan tamsayı dizisini sonsuza kadar çıkar .x_i >= 3nb2 <= b <= x_i-2

Bu temelde OEIS A126071'in tersidir , burada bu dizideki hangi indekslerin değeri vardır n. Biraz farklı, çünkü değiştirdim, böylece üsleri görmezden geliyorsunuz b = x_i-1, x_i, x_i+1, çünkü bu üslerin sonuçları her zaman aynı (değerler her zaman palindromlar ya da her zaman değil). Ayrıca, ofset farklıdır.

x_inumaraları ile sınırlı >= 3her sonucunun ilk terim, böylece nbir A037183 .

Çıktı biçiminin esnek olduğunu, ancak sayıların iyi bir şekilde sınırlandırılması gerektiğini unutmayın.

Örnekler:

n   seq
0   3 4 6 11 19 47 53 79 103 137 139 149 163 167 ...
1   5 7 8 9 12 13 14 22 23 25 29 35 37 39 41 43 49 ...
2   10 15 16 17 18 20 27 30 31 32 33 34 38 44 ...
3   21 24 26 28 42 45 46 50 51 54 55 56 57 64 66 68 70 ...
4   36 40 48 52 63 65 85 88 90 92 98 121 128 132 136 138 ...
5   60 72 78 84 96 104 105 108 112 114 135 140 156 162 164 ...
10  252 400 420 432 510 546 600 648 784 800 810 816 819 828 858 882 910 912 1040 1056 ...

Yani n=0, bu zorluğun çıktısını alırsınız (başından itibaren 3), çünkü n=0bazlarda palindrom olan sayılar alırsınız .

Çünkü n=1, 5tabandaki bir palindromdur 2ve 2 <= b <= (5-2)onun bir palindrom 7olduğu tek tabandır. Tabandaki bir palindromdur 2ve bu bir palindromun bulunduğu tek 2 <= b <= (7-2)tabandır. Vb.


Diliniz sonsuz çıktıyı desteklemiyorsa, zgiriş olarak başka bir tamsayı alabilir zve dizinin ilk öğelerini veya daha küçük tüm öğeleri çıkarabilirsiniz z. Hangisini tercih edersen. Bu durumda lütfen cevabınızda kullandığınız şeyi belirtin.

İlişkili


% 100 net olmak için, çıkan sayılar tam olarak palindrom olmalı, tam olarak ndeğil, ndaha fazla baz olmalıdır?
Mike Bufardeci

1
Evet. Bu doğru. Yani tüm dizilerin tüm değerleri için birleşmesi ntamsayılar kümesidir >=3.
mbomb007

Yanıtlar:


2

Jöle , 18 bayt

Ṅ‘µ‘µbRŒḂ€S_2⁼³µ?ß

Çevrimiçi deneyin! - çevrimiçi yorumlayıcı 60 saniyede zaman aşımına uğrayacak ve çıktısını temizleyecektir (önbelleğe alınmış bir kopyası yoksa), her biri sırayla yazdıracaktır.

Nasıl?

Sekanstaki sayıları nyukarıdan değerlendirerek yazdırır. Herhangi bir çıktıdaki ilk sayının, naksi takdirde aralığı byeterince büyük olmadığından daha büyük olacağına dikkat edin , bu nedenle işlemi tohumlamaya gerek yoktur 3. Ayrıca tabanından palindrom sayısı not 2 için X i -2 dahil sadece iki daha tabanından palindrom sayısı daha 1 için x .

Ṅ‘µ‘µbRŒḂ€S_2⁼³µ?ß - Main link: n
 AµBµC         µ?  - ternary if: if C then A else B
      R            - range: [1,2,3...,n]
     b             - n converted to those bases
       ŒḂ€         - is palindromic? for €ach
          S        - sum: counts the 1s
           _2      - subtract 2: throw away the truthy unary and base n-1 effect
             ⁼³    - equals input: Does this equal the ORIGINAL n?
Ṅ                  - if so: print n
 ‘                 -        increment n
   ‘               - else: just increment n
                 ß - calls this link as a monad, with the incremented n.

4

Mathematica, 80 71 bayt

9 bayt kazandığı için JungHwan Min'e teşekkürler!

Do[#!=Length[i~IntegerReverse~Range[2,i-2]~Cases~i]||Echo@i,{i,3,∞}]&

( üç baytlık karakter U + 221E'dir.) Giriş olarak negatif olmayan bir tam sayı alan saf işlev. i~IntegerReverse~Range[2,i-2]sayının ters bir liste oluşturur itüm üsleri 2için i-2; sonra Length[...~Cases~i]bu ters kayıtlardan kaç tanesinin itekrar eşit olduğunu sayar . #!=...||Echo@ibu sayı girişe eşit değilse sessizce durur ve girişe eşitse yankılanır i. Bu prosedür, basit bir sonsuz döngü içine yerleştirilmiştir.


Kısa devre değerlendirmesinin akıllı kullanımı ! Echo@iİlk argüman olduğunda terim değerlendirilmez True. Bunu Mathematica'da Golf için ipuçları bölümüne ekleyebilir miyim ?
JungHwan Min

Bu arada, Do[...,{i,3,∞}]daha kısadır (i=2;While[1>0,... ++i ...])ve Casesyerine çalışır Position. -9 bayt:Do[#!=Length[i~IntegerReverse~Range[2,i-2]~Cases~i]||Echo@i,{i,3,∞}]&
JungHwan Min

Evet, lütfen bahşiş ekleyin! —Burada bir yerden kesinlikle öğrendiğim için zaten orada olmadığına şaşırdım ....
Greg Martin

Casesyerine harika çalışıyor Position. Ama Doyapıyı test ettim ve bu benim için işe yaramıyor ama neden olmasın hakkında hiçbir fikrim yok. Bazı nedenlerden dolayı, ideğerleri takmaz; hatalar alıyorum "Range specification in Range[2,-2+i] does not have appropriate bounds.". (Ve değer atanmamış bir Print[i];doğrulama ekler i.) Herhangi bir fikir var mı?
Greg Martin

Görünüşe göre, orada, kodda U + 200B ve U + 200C idi arasına ,ve {(SE sistemi ile yapılacak muhtemelen bir şey). Karakterler bir değişken olarak kabul edildiğinden bu kodu bozar. Umarım buna sahip değildir: Do[#!=Length[i~IntegerReverse~Range[2,i-2]~Cases~i]||Echo@i,{i,3,∞}]& EDIT: Hala var. İşte bir
çöp

1

Pyth, 21 19 18 bayt

.V3IqQlf_IjbTr2tbb

Bu teoride çalışmalı. Sonsuz döngüyü herhangi bir sonlu olanın yerine koyarsam düzgün çalışır (örneğin JQFbr3 50*`bqJlf_IjbTr2tb3'ten 50'ye kadar, burada deneyin ), ancak Pyth yorumlayıcısı kelimenin tam anlamıyla sonsuz çıktıyı ne zaman veya nasıl yazdıracağını bilmiyor.

Açıklama:

.V3IqQlf_IjbTr2tbb
.V3                     increase b infinitely, starting from 3
             r2Tb       range of integers including 2 to b - 2
      lf                length of elements retained if:
          jbT             b in that base
        _I                is invariant under reversal
    qQ                  check if the length is equivalent to the input
   I             b      output b if so

1

Perl 6 , 90 bayt

->\n{->{$_=++($ //=2);$_ if n==grep {($/=[.polymod($^b xx*)])eq[$/.reverse]},2..$_-2}...*}

Dene

-> \n {

  # sequence generator
  ->{         # using a code block with no parameter

    $_ =      # set the default scalar to the value being tested
      ++(     # preincrement
        $     # anonymous state variable
        //= 2 # initialized to 2 
      );

    # the anonymous state var maintains its state
    # only for this current sequence
    # every time the outer block gets called it is created anew

    $_    # return the current value
      if  # if the following is true

        n == grep # find all that match the following code

          {
            # convert the current value to the base being tested
            # store as an Array in $/
            ($/ = [ .polymod($^b xx*) ] )

            eq    # is string equal to: (shorter than eqv)

            [ $/.reverse ]
          },

          2 .. $_ - 2 # from the list of bases to test
  }

  ...  # keep using that code block to produce values

  *    # indefinitely
}

1

Bash + Unix yardımcı programları, 134131 bayt

for((x=3;;x++)){
c=$1
for((b=x-1;--b>1;)){
s=`bc<<<"for(y=$x;y;y/=$b)y%$b"`
t=`tac<<<"$s"`
[ "${s#$t}" ]||((c--))
}
((c))||echo $x
}

Çevrimiçi deneyin!

Girdi argüman olarak iletilir. Çıkış stdout üzerindedir.

Bunu normal şekilde çalıştırırsanız, sonsuz sırada her seferinde bir sayı görüntüler.

Bunu TIO'da denerseniz, 60 saniyede zaman aşımına uğradığında ürettiği kadar çıktı görüntüler.


0

Python 2, 132 bayt

B=lambda n,b:[]if(n<1)else B(n/b,b)+[n%b]
n=input()
x=3
while 1:
    if sum(B(x,b)==B(x,b)[::-1]for b in range(2,x-1))==n:print x
    x+=1

Çevrimiçi deneyin

TIO programına bir altbilgi eklendi, böylece çıktıyı görmeden önce programın zaman aşımına uğraması için 1 dakika beklemenize gerek yok.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.