Các số là palindromes trong N căn cứ


10

Cho một số nguyên không âm n >= 0, xuất ra mãi mãi chuỗi số nguyên x_i >= 3là các palindrome trong ncác cơ sở chính xác khác nhau b, trong đó cơ sở có thể 2 <= b <= x_i-2.

Về cơ bản, đây là nghịch đảo của OEIS A126071 , nơi bạn xuất ra các chỉ số trong chuỗi đó có giá trị n. Nó hơi khác một chút, vì tôi đã thay đổi nó nên bạn bỏ qua các cơ sở b = x_i-1, x_i, x_i+1, vì kết quả cho các cơ sở đó luôn giống nhau (các giá trị luôn luôn là palindromes hoặc luôn luôn không). Ngoài ra, bù đắp là khác nhau.

x_iđược giới hạn ở các số >= 3sao cho số hạng đầu tiên của kết quả cho mỗi số nA037183 .

Lưu ý rằng định dạng đầu ra là linh hoạt, nhưng các số phải được phân định một cách tốt đẹp.

Ví dụ:

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

Vì vậy n=0, bạn nhận được đầu ra của thử thách này (bắt đầu từ 3), bởi vì bạn nhận được các số là palindromes trong n=0các cơ sở.

n=1, 5là một palindrom trong cơ sở 2, và đó là cơ sở duy nhất 2 <= b <= (5-2)mà nó là một palindrom trong. 7Là một palindrom trong cơ sở 2, và đó là cơ sở duy nhất 2 <= b <= (7-2)mà nó là một palindrom trong. V.v.


Nếu ngôn ngữ của bạn không hỗ trợ đầu ra vô hạn, bạn có thể lấy một số nguyên khác zlàm đầu vào và xuất các zphần tử đầu tiên của chuỗi hoặc tất cả các phần tử nhỏ hơn z. Bất cứ điều gì bạn thích. Vui lòng cho biết bạn đã sử dụng câu trả lời nào nếu đây là trường hợp.

Liên quan


Để rõ ràng 100%, các số là đầu ra phải là palindromes trong ncác cơ sở chính xác , không phải nhoặc nhiều cơ sở?
Mike Bufardeci

1
Đúng. Đúng rồi. Vì vậy, liên kết của tất cả các chuỗi cho tất cả các giá trị nlà tập hợp các số nguyên >=3.
mbomb007 ngày

Câu trả lời:


2

Thạch , 18 byte

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

Hãy thử trực tuyến! - trình thông dịch trực tuyến sẽ hết thời gian chờ sau 60 giây, sau đó xóa đầu ra của nó (trừ khi nó có một bản sao được lưu trong bộ nhớ cache), ngoại tuyến, nó sẽ in lần lượt từng bản.

Làm sao?

Đánh giá các số từ nlên, in chúng nếu chúng nằm trong chuỗi. Lưu ý rằng số đầu tiên trong bất kỳ đầu ra nào sẽ lớn hơn nvì nếu không thì phạm vi của bnó không đủ lớn, do đó không cần phải gieo quá trình 3. Cũng lưu ý rằng số lượng palindrome từ cơ sở 2 đến x i -2 đã bao gồm chỉ bằng hai so với số lượng palindrome từ cơ sở 1 đến 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

Toán học, 80 71 byte

Cảm ơn JungHwan Min vì đã tiết kiệm 9 byte!

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

( là ký tự ba byte U + 221E.) Hàm thuần túy lấy số nguyên không âm làm đầu vào. i~IntegerReverse~Range[2,i-2]tạo một danh sách các số đảo ngược của số itrong tất cả các cơ sở từ 2đến i-2; sau đó Length[...~Cases~i]đếm xem có bao nhiêu trong số các đảo ngược này bằng với imột lần nữa. #!=...||Echo@idừng lại một cách im lặng nếu số đó không bằng đầu vào và lặp lại inếu nó bằng đầu vào. Thủ tục đó được nhúng trong một vòng lặp vô hạn đơn giản.


Khéo léo sử dụng đánh giá ngắn mạch ! Các Echo@ithuật ngữ không được đánh giá khi số đầu tiên là True. Tôi có thể thêm phần này vào Mẹo để chơi gôn trong Mathematica không?
JungHwan Min

Nhân tiện, Do[...,{i,3,∞}]ngắn hơn (i=2;While[1>0,... ++i ...]), và Casessẽ làm việc thay vì Position. -9 byte:Do[#!=Length[i~IntegerReverse~Range[2,i-2]~Cases~i]||Echo@i,{i,3,∞}]&
JungHwan Min

Vâng, xin vui lòng thêm mẹo! Tôi rất ngạc nhiên vì nó chưa có ở đó, vì tôi chắc chắn đã học được nó từ trang web này ở đâu đó ....
Greg Martin

Caseslàm việc tuyệt vời ở nơi Position. Nhưng tôi đã thử nghiệm việc Doxây dựng và nó không hoạt động với tôi nhưng tôi không biết tại sao lại không. Vì một số lý do, nó không cắm vào các igiá trị mà tôi gặp lỗi như thế nào "Range specification in Range[2,-2+i] does not have appropriate bounds.". (Và chèn một Print[i];xác minh ikhông được gán giá trị.) Có ý tưởng nào không?
Greg Martin

Rõ ràng, có mã U + 200B và U + 200C, giữa ,{(có lẽ phải làm gì đó với hệ thống của SE). Điều đó phá vỡ mã bởi vì các ký tự được coi là một biến. Tôi hy vọng điều này không có nó: Do[#!=Length[i~IntegerReverse~Range[2,i-2]~Cases~i]||Echo@i,{i,3,∞}]& EDIT: Vẫn có nó. Đây là một liên kết pastebin
JungHwan Min

1

Pyth, 21 19 18 byte

.V3IqQlf_IjbTr2tbb

Điều này sẽ làm việc trong lý thuyết. Nó hoạt động đúng nếu tôi thay thế vòng lặp vô hạn cho bất kỳ vòng lặp hữu hạn nào (ví dụ: JQFbr3 50*`bqJlf_IjbTr2tbtừ 3 ​​đến 50, thử ở đây ), nhưng trình thông dịch Pyth không biết khi nào hoặc làm thế nào để in đầu ra vô hạn theo nghĩa đen.

Giải trình:

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

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

Thử nó

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

Tiện ích 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
}

Hãy thử trực tuyến!

Đầu vào được thông qua như là một đối số. Đầu ra là trên thiết bị xuất chuẩn.

Nếu bạn chạy cái này bình thường, nó sẽ hiển thị một số tại một thời điểm trong chuỗi vô hạn.

Nếu bạn thử điều này trong TIO, nó sẽ hiển thị nhiều đầu ra như đã tạo khi hết thời gian 60 giây.


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

Dùng thử trực tuyến

Chương trình TIO có chân trang được thêm vào, do đó bạn không phải đợi 1 phút để chương trình hết thời gian trước khi thấy đầu ra.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.