Bilangan yang palindrom di pangkalan N

10

Diberikan bilangan bulat non-negatif n >= 0, menghasilkan selamanya bilangan bulat bilangan bulat x_i >= 3yang palindrom di nbasis yang persis berbeda b, di mana basis bisa 2 <= b <= x_i-2.

Ini pada dasarnya kebalikan dari OEIS A126071 , di mana Anda menampilkan indeks mana dalam urutan yang memiliki nilai n. Agak berbeda, karena saya mengubahnya sehingga Anda mengabaikan basis b = x_i-1, x_i, x_i+1, karena hasil untuk basis itu selalu sama (nilainya selalu palindrom atau selalu tidak). Juga, offset berbeda.

x_iterbatas pada angka >= 3sehingga istilah pertama dari hasil untuk masing-masing nadalah A037183 .

Perhatikan bahwa format output fleksibel, tetapi angka-angka harus dibatasi dengan cara yang baik.

Contoh:

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 ...

Jadi untuk n=0, Anda mendapatkan hasil dari tantangan ini (mulai dari 3), karena Anda mendapatkan angka yang palindrom di n=0pangkalan.

Karena n=1, 5adalah palindrome di basis 2, dan itulah satu-satunya basis 2 <= b <= (5-2)yang menjadi palindrome. 7Adalah palindrome di dasar 2, dan itulah satu-satunya basis di 2 <= b <= (7-2)mana palindrome. Dll


Jika bahasa Anda tidak mendukung output yang tidak terbatas, Anda dapat mengambil integer lain zsebagai input dan output zelemen pertama dari urutan, atau semua elemen kurang dari z. Apapun yang kamu inginkan. Harap sebutkan yang Anda gunakan dalam jawaban Anda jika ini masalahnya.

Terkait

mbomb007
sumber
Agar 100% jelas, angka-angka yang dihasilkan harus palindrom di nbasis yang tepat , bukan natau lebih basis?
Mike Bufardeci
1
Iya. Itu betul. Jadi penyatuan semua urutan untuk semua nilai nadalah himpunan bilangan bulat >=3.
mbomb007

Jawaban:

2

Jelly , 18 byte

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

Cobalah online! - penerjemah online akan kehabisan waktu 60 detik kemudian menyiram outputnya (kecuali jika memiliki salinan cache), offline akan mencetak masing-masing secara bergantian.

Bagaimana?

Mengevaluasi angka dari natas, mencetaknya jika berurutan. Perhatikan bahwa angka pertama dalam output apa pun akan lebih besar daripada nkarena jika tidak rentangnya btidak cukup besar, sehingga tidak perlu menyemai proses dengan 3. Juga catat bahwa jumlah palindrom dari basis 2 ke x i -2 inklusif hanya dua kurang dari jumlah palindrom dari basis 1 ke 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.
Jonathan Allan
sumber
4

Mathematica, 80 71 byte

Terima kasih kepada JungHwan Min karena telah menghemat 9 byte!

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

( adalah karakter tiga byte U + 221E.) Fungsi murni mengambil bilangan bulat tidak negatif sebagai input. i~IntegerReverse~Range[2,i-2]membuat daftar pembalikan angka idi semua pangkalan dari 2ke i-2; lalu Length[...~Cases~i]menghitung berapa banyak dari pembalikan ini yang sama dengan ilagi. #!=...||Echo@iberhenti secara diam-diam jika jumlah itu tidak sama dengan input, dan bergema ijika sama dengan input. Prosedur itu tertanam dalam loop tak terbatas langsung.

Greg Martin
sumber
Penggunaan cerdas evaluasi hubung singkat ! The Echo@iIstilah tidak dievaluasi ketika argumen pertama adalah True. Bisakah saya menambahkan ini ke Tips untuk bermain golf di Mathematica ?
JungHwan Min
By the way, Do[...,{i,3,∞}]lebih pendek dari (i=2;While[1>0,... ++i ...]), dan Casesakan berhasil Position. -9 byte:Do[#!=Length[i~IntegerReverse~Range[2,i-2]~Cases~i]||Echo@i,{i,3,∞}]&
JungHwan Min
Ya, tolong tambahkan tipnya! —Aku terkejut itu belum ada di sana, karena aku pasti mempelajarinya dari situs ini di suatu tempat ....
Greg Martin
Casesbekerja hebat di tempat Position. Tetapi saya menguji Dokonstruksinya, dan itu tidak berhasil untuk saya, tetapi saya tidak tahu kenapa tidak. Untuk beberapa alasan, ini tidak memasukkan inilainya — saya mendapatkan kesalahan seperti "Range specification in Range[2,-2+i] does not have appropriate bounds.". (Dan memasukkan Print[i];verifikasi yang itidak diberi nilai.) Ada gagasan?
Greg Martin
Rupanya, ada U + 200B dan U + 200C dalam kode, antara ,dan {(mungkin ada hubungannya dengan sistem SE). Itu memecah kode karena karakter dianggap variabel. Saya harap ini tidak memilikinya: Do[#!=Length[i~IntegerReverse~Range[2,i-2]~Cases~i]||Echo@i,{i,3,∞}]& EDIT: Masih memilikinya. Berikut tautan pastebin
JungHwan Min
1

Pyth, 21 19 18 byte

.V3IqQlf_IjbTr2tbb

Ini seharusnya bekerja secara teori. Ini berfungsi dengan baik jika saya mengganti loop tak terbatas dengan yang terbatas (misalnya JQFbr3 50*`bqJlf_IjbTr2tbuntuk 3 hingga 50, coba di sini ), tetapi juru bahasa Pyth tidak tahu kapan atau bagaimana cara mencetak output yang benar-benar tak terbatas.

Penjelasan:

.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
notjagan
sumber
1

Perl 6 , 90 byte

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

Cobalah

-> \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
}
Brad Gilbert b2gills
sumber
1

Utilitas Bash + Unix, 134 132 byte

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
}

Cobalah online!

Input diberikan sebagai argumen. Outputnya ada di stdout.

Jika Anda menjalankan ini secara normal, itu akan menampilkan satu nomor pada suatu waktu dalam urutan yang tak terbatas.

Jika Anda mencoba ini di TIO, itu akan menampilkan sebanyak output yang dihasilkan ketika waktu 60 detik.

Mitchell Spector
sumber
0

Python 2, 132 byte

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

Cobalah online

Program TIO memiliki catatan kaki yang ditambahkan sehingga Anda tidak perlu menunggu 1 menit hingga program berhenti sebelum melihat hasilnya.

mbomb007
sumber