Nombres qui sont des palindromes en bases N


10

Étant donné un entier non négatif n >= 0, affichez pour toujours la séquence d'entiers x_i >= 3qui sont des palindromes dans ndes bases exactement différentes b, où la base peut être 2 <= b <= x_i-2.

Il s'agit essentiellement de l'inverse de OEIS A126071 , où vous affichez les indices de cette séquence qui ont la valeur n. C'est un peu différent, parce que je l'ai changé pour que vous ignoriez les bases b = x_i-1, x_i, x_i+1, car les résultats pour ces bases sont toujours les mêmes (les valeurs sont toujours des palindromes ou toujours pas). De plus, le décalage est différent.

x_iest limité aux nombres >= 3afin que le premier terme du résultat pour chacun nsoit A037183 .

Notez que le format de sortie est flexible, mais les nombres doivent être délimités de manière agréable.

Exemples:

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

Donc, pour n=0, vous obtenez la sortie de ce défi (à partir de 3), car vous obtenez des nombres qui sont des palindromes dans les n=0bases.

Car n=1, 5est un palindrome dans la base 2, et c'est la seule base dans 2 <= b <= (5-2)laquelle c'est un palindrome. 7Est un palindrome dans la base 2, et c'est la seule base dans 2 <= b <= (7-2)laquelle il est un palindrome. Etc.


Si votre langue ne prend pas en charge la sortie infinie, vous pouvez prendre un autre entier zen entrée et sortir les premiers zéléments de la séquence, ou tous les éléments inférieurs à z. Celui que tu préfères. Veuillez indiquer ce que vous avez utilisé dans votre réponse si tel est le cas.

en relation


Pour être clair à 100%, les nombres sortis doivent être des palindromes dans exactement des nbases, pas nou plus de bases?
Mike Bufardeci

1
Oui. C'est exact. Ainsi, l'union de toutes les séquences pour toutes les valeurs de nest l'ensemble des entiers >=3.
mbomb007

Réponses:


2

Gelée , 18 octets

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

Essayez-le en ligne! - l'interpréteur en ligne expirera à 60 secondes puis videra sa sortie (sauf s'il a une copie en cache), hors ligne il imprimera chacun à son tour.

Comment?

Évalue les nombres de nhaut en haut, les imprimant s'ils sont dans la séquence. Notez que le premier nombre dans n'importe quelle sortie sera supérieur à ncar sinon la plage de bn'est pas assez grande, il n'est donc pas nécessaire d'amorcer le processus avec 3. Notez également que le nombre de palindromes de la base 2 à x i -2 inclus est juste deux de moins que le nombre de palindromes de la base 1 à 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 octets

Merci à JungHwan Min pour avoir économisé 9 octets!

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

( est le caractère à trois octets U + 221E.) Fonction pure prenant un entier non négatif en entrée. i~IntegerReverse~Range[2,i-2]crée une liste des inversions de nombre idans toutes les bases de 2à i-2; Length[...~Cases~i]compte ensuite combien de ces inversions sont égales à inouveau. #!=...||Echo@is'arrête silencieusement si ce nombre n'est pas égal à l'entrée et fait écho is'il est égal à l'entrée. Cette procédure est intégrée dans une boucle infinie simple.


Utilisation intelligente de l' évaluation des courts-circuits ! Le Echo@iterme n'est pas évalué lorsque le premier argument l'est True. Puis-je ajouter ceci aux conseils pour jouer au golf dans Mathematica ?
JungHwan Min

Par ailleurs, Do[...,{i,3,∞}]est plus court que (i=2;While[1>0,... ++i ...]), et Casesfonctionnerait à la place de Position. -9 octets:Do[#!=Length[i~IntegerReverse~Range[2,i-2]~Cases~i]||Echo@i,{i,3,∞}]&
JungHwan Min

Oui, veuillez ajouter le conseil! - Je suis surpris qu'il ne soit pas déjà là, car je l'ai définitivement appris sur ce site quelque part ....
Greg Martin

Casesfonctionne très bien à la place de Position. Mais j'ai testé la Doconstruction, et ça ne marche pas pour moi mais je n'ai aucune idée pourquoi. Pour une raison quelconque, il ne branche pas les ivaleurs - j'obtiens des erreurs comme "Range specification in Range[2,-2+i] does not have appropriate bounds.". (Et l'insertion d'un Print[i];vérifie que les ivaleurs ne sont pas attribuées.) Des idées?
Greg Martin

Apparemment, il y avait U + 200B et U + 200C dans le code, entre ,et {(probablement quelque chose à voir avec le système de SE). Cela casse le code car les caractères sont considérés comme une variable. J'espère que cela ne l'a pas: Do[#!=Length[i~IntegerReverse~Range[2,i-2]~Cases~i]||Echo@i,{i,3,∞}]& EDIT: l'a toujours. Voici un lien pastebin
JungHwan Min

1

Pyth, 21 19 18 octets

.V3IqQlf_IjbTr2tbb

Cela devrait fonctionner en théorie. Cela fonctionne correctement si je remplace la boucle infinie par une boucle finie (par exemple JQFbr3 50*`bqJlf_IjbTr2tbpour 3 jusqu'à 50, essayez ici ), mais l'interpréteur Pyth ne sait pas quand ni comment imprimer une sortie littéralement infinie.

Explication:

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

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

Essayez-le

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

Utilitaires Bash + Unix, 134 132 octets

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
}

Essayez-le en ligne!

L'entrée est passée en argument. La sortie est sur stdout.

Si vous l'exécutez normalement, il affichera un nombre à la fois dans la séquence infinie.

Si vous essayez ceci dans TIO, il affichera autant de sortie qu'il a généré lorsqu'il expire à 60 secondes.


0

Python 2, 132 octets

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

Essayez-le en ligne

Le programme TIO a un pied de page ajouté afin que vous n'ayez pas à attendre 1 minute pour que le programme expire avant de voir la sortie.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.