Liczby będące palindromami w N bazach

10

Biorąc pod uwagę nieujemną liczbę całkowitą n >= 0, wypisz na zawsze sekwencję liczb całkowitych, x_i >= 3które są palindromami w dokładnie nróżnych zasadach b, gdzie może być zasada 2 <= b <= x_i-2.

Jest to w zasadzie odwrotność OEIS A126071 , gdzie wypisujesz , które indeksy w tej sekwencji mają wartość n. Jest trochę inaczej, ponieważ zmieniłem to, więc ignorujesz bazy b = x_i-1, x_i, x_i+1, ponieważ wyniki dla tych baz są zawsze takie same (wartości są zawsze palindromami lub zawsze nie). Także przesunięcie jest inne.

x_ijest ograniczony do liczb, >= 3tak więc pierwszym elementem wyniku dla każdego njest A037183 .

Zauważ, że format wyjściowy jest elastyczny, ale liczby powinny być dobrze rozdzielane.

Przykłady:

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

Tak więc n=0, otrzymujesz wynik tego wyzwania (zaczynając od 3), ponieważ dostajesz liczby, które są palindromami w n=0bazach.

Dla n=1, 5to palindrom w bazie 2, a to jedyna podstawa 2 <= b <= (5-2), że jest to palindrom w. 7Jest palindrom w bazie 2, a to jedyna podstawa 2 <= b <= (7-2), że jest to palindrom w. Itd


Jeśli twój język nie obsługuje nieskończonego wyjścia, możesz przyjąć inną liczbę całkowitą zjako dane wejściowe i wyjściowe pierwszych zelementów sekwencji lub wszystkich elementów mniejszych niż z. Którykolwiek wolisz. W takim przypadku proszę podać, które informacje zostały użyte w odpowiedzi.

Związane z

mbomb007
źródło
Aby być w 100% jasne, wyprowadzane liczby muszą być palindromami w dokładnie nbazach, a nie w nwiększej liczbie baz?
Mike Bufardeci,
1
Tak. To jest poprawne. Tak więc suma wszystkich sekwencji dla wszystkich wartości njest zbiorem liczb całkowitych >=3.
mbomb007

Odpowiedzi:

2

Galaretka , 18 bajtów

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

Wypróbuj online! - interpreter online przekroczy limit czasu po 60 sekundach, a następnie opróżni swoje wyjście (chyba że ma kopię w pamięci podręcznej), w trybie offline drukuje kolejno.

W jaki sposób?

Ocenia liczby od ngóry, drukując je, jeśli są w sekwencji. Zauważ, że pierwsza liczba na dowolnym wyjściu będzie większa niż, nponieważ w przeciwnym razie zakres bnie będzie wystarczająco duży, więc nie ma potrzeby inicjowania procesu 3. Zauważ również, że liczba palindromów od podstawy 2 do x i -2 włącznie jest tylko dwa razy mniejsza niż liczba palindromów od podstawy 1 do 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
źródło
4

Mathematica, 80 71 bajtów

Dzięki JungHwan Min za oszczędność 9 bajtów!

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

( to trzy bajtowy znak U + 221E.) Czysta funkcja przyjmująca nieujemną liczbę całkowitą jako dane wejściowe. i~IntegerReverse~Range[2,i-2]tworzy listę odwrotności liczby iwe wszystkich bazach od 2do i-2; następnie Length[...~Cases~i]liczy, ile z tych zwrotów jest równych iponownie. #!=...||Echo@izatrzymuje się cicho, jeśli ta liczba nie jest równa wartości wejściowej, i echa, ijeśli jest równa wartości wejściowej. Ta procedura jest osadzona w prostej, nieskończonej pętli.

Greg Martin
źródło
Sprytne zastosowanie oceny zwarcia ! Echo@iTermin nie jest oceniana, gdy pierwszy argument jest True. Czy mogę dodać to do Porady dotyczące gry w golfa w Mathematica ?
JungHwan Min
Nawiasem mówiąc, Do[...,{i,3,∞}]jest krótszy niż (i=2;While[1>0,... ++i ...])i Casesdziałałby zamiast Position. -9 bajtów:Do[#!=Length[i~IntegerReverse~Range[2,i-2]~Cases~i]||Echo@i,{i,3,∞}]&
JungHwan Min
Tak, proszę dodaj wskazówkę! - Dziwię się, że jeszcze tam nie ma, ponieważ na pewno gdzieś się tego nauczyłem ...
Greg Martin
Casesdziała świetnie zamiast Position. Ale przetestowałem Dokonstrukcję i nie działa ona dla mnie, ale nie mam pojęcia, dlaczego. Z jakiegoś powodu nie podłącza iwartości - dostaję błędy takie jak "Range specification in Range[2,-2+i] does not have appropriate bounds.". (I wstawienie Print[i];weryfikacji, która inie ma przypisanych wartości.) Jakieś pomysły?
Greg Martin
Najwyraźniej w kodzie były U + 200B i U + 200C, pomiędzy ,i {(prawdopodobnie coś wspólnego z systemem SE). To łamie kod, ponieważ znaki są uważane za zmienne. Mam nadzieję, że tego nie ma: Do[#!=Length[i~IntegerReverse~Range[2,i-2]~Cases~i]||Echo@i,{i,3,∞}]& EDYCJA: Nadal ma. Oto link do pastebin
JungHwan Min
1

Pyth, 21 19 18 bajtów

.V3IqQlf_IjbTr2tbb

To powinno działać w teorii. Działa poprawnie, jeśli podstawię nieskończoną pętlę na dowolną skończoną (np. JQFbr3 50*`bqJlf_IjbTr2tbDla 3 do 50, spróbuj tutaj ), ale interpreter Pyth nie wie, kiedy i jak drukować dosłownie nieskończone wyjście.

Wyjaśnienie:

.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
źródło
1

Perl 6 , 90 bajtów

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

Spróbuj

-> \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
źródło
1

Narzędzia Bash + Unix, 134 132 bajty

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
}

Wypróbuj online!

Dane wejściowe są przekazywane jako argument. Wyjście jest ustawione na standardowe wyjście.

Jeśli uruchomisz to normalnie, wyświetli się jedna liczba naraz w nieskończonej sekwencji.

Jeśli spróbujesz tego w TIO, wyświetli on tyle wyjścia, ile wygenerowało, gdy przekroczy 60 sekund.

Mitchell Spector
źródło
0

Python 2, 132 bajty

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

Wypróbuj online

Do programu TIO dodano stopkę, więc nie trzeba czekać 1 minuty, aż program przekroczy limit czasu, zanim zobaczy wynik.

mbomb007
źródło