Dado um número inteiro não negativo n >= 0
, imprima para sempre a sequência de números inteiros x_i >= 3
que são palíndromos em n
bases exatamente diferentes b
, onde a base pode estar 2 <= b <= x_i-2
.
Isso é basicamente o inverso do OEIS A126071 , no qual você gera quais índices nessa sequência têm o valor n
. É um pouco diferente, porque mudei para que você ignore as bases b = x_i-1, x_i, x_i+1
, pois os resultados dessas bases são sempre os mesmos (os valores são sempre palíndromos ou sempre não são). Além disso, o deslocamento é diferente.
x_i
é restrito a números >= 3
para que o primeiro termo do resultado para cada um n
seja A037183 .
Observe que o formato de saída é flexível, mas os números devem ser delimitados de uma maneira agradável.
Exemplos:
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 ...
Portanto n=0
, você obtém o resultado desse desafio (começando em 3
), porque obtém números que são palíndromos em n=0
bases.
Pois n=1
, 5
é um palíndromo na base 2
, e essa é a única base em 2 <= b <= (5-2)
que é um palíndromo. 7
É um palíndromo na base 2
, e essa é a única base em 2 <= b <= (7-2)
que é um palíndromo. Etc.
Se seu idioma não suporta saída infinita, você pode usar outro número inteiro z
como entrada e gerar os primeiros z
elementos da sequência ou todos os elementos menores que z
. O que você preferir. Por favor, indique o que você usou em sua resposta, se for esse o caso.
fonte
n
bases, nãon
ou mais bases?n
é o conjunto de números inteiros>=3
.Respostas:
Geléia , 18 bytes
Experimente online! - o intérprete on-line atingirá o tempo limite em 60 segundos e liberará sua saída (a menos que tenha uma cópia em cache); off-line imprimirá cada um por vez.
Como?
Avalia os números de
n
cima para cima, imprimindo-os se estiverem na sequência. Observe que o primeiro número em qualquer saída será maior do que,n
pois, caso contrário, o intervalo deb
não é grande o suficiente, portanto, não há necessidade de semear o processo3
. Observe também que o número de palíndromos da base 2 até x i -2 inclusive é apenas dois a menos que o número de palíndromos da base 1 até x .fonte
Mathematica,
8071 bytesObrigado a JungHwan Min por salvar 9 bytes!
(
∞
é o caractere de três bytes U + 221E.) Função pura, recebendo um número inteiro não negativo como entrada.i~IntegerReverse~Range[2,i-2]
cria uma lista das reversões do númeroi
em todas as bases de2
parai-2
; entãoLength[...~Cases~i]
conta quantas dessas reversões são iguaisi
novamente.#!=...||Echo@i
pára silenciosamente se essa contagem não for igual à entrada e ecoarái
se for igual à entrada. Esse procedimento é incorporado em um loop infinito direto.fonte
Echo@i
termo não é avaliado quando o primeiro argumento éTrue
. Posso adicionar isso às Dicas para jogar golfe no Mathematica ?Do[...,{i,3,∞}]
é mais curto que(i=2;While[1>0,... ++i ...])
eCases
funcionaria em vez dePosition
. -9 bytes:Do[#!=Length[i~IntegerReverse~Range[2,i-2]~Cases~i]||Echo@i,{i,3,∞}]&
Cases
funciona muito bem no lugar dePosition
. Mas testei aDo
construção e ela não funciona para mim, mas não tenho idéia do por que não. Por alguma razão, ele não encaixa osi
valores - eu recebo erros como esse"Range specification in Range[2,-2+i] does not have appropriate bounds."
. (E inserir umPrint[i];
verifica quei
não está sendo atribuído valores.) Alguma idéia?,
e{
(provavelmente algo a ver com o sistema da SE). Isso quebra o código porque os caracteres são considerados uma variável. Espero que isso não ocorra:Do[#!=Length[i~IntegerReverse~Range[2,i-2]~Cases~i]||Echo@i,{i,3,∞}]&
EDIT: Ainda o possui. Aqui está um link pastebinPitão,
211918 bytesIsso deve funcionar em teoria. Funciona corretamente se eu substituir o loop infinito por um finito (por exemplo,
JQFbr3 50*`bqJlf_IjbTr2tb
de 3 a 50, tente aqui ), mas o interpretador Pyth não sabe quando ou como imprimir uma saída literalmente infinita.Explicação:
fonte
Perl 6 , 90 bytes
Tente
fonte
Utilitários Bash + Unix,
134132 bytesExperimente online!
A entrada é passada como argumento. A saída está em stdout.
Se você executar isso normalmente, ele exibirá um número de cada vez na sequência infinita.
Se você tentar isso no TIO, ele exibirá o máximo de saída que gerou quando atingir o tempo limite em 60 segundos.
fonte
Python 2, 132 bytes
Experimente online
O programa TIO possui um rodapé adicionado para que você não precise esperar 1 minuto para o tempo limite do programa expirar antes de ver a saída.
fonte