Gere o número den
sequência de bases em que é um palíndromo ( OEIS A126071 ).
Especificamente, a sequência é definida da seguinte forma: dado um número n
, expresse-o na base a
de a = 1,2, ..., n
e conte quantas dessas expressões são palindrômicas. "Palindrômico" é entendido em termos de reversão dos a
dígitos básicos da expressão como unidades atômicas (obrigado, @Martin Büttner ). Como exemplo, considere n= 5
:
a=1
: a expressão é11111
: palindrômicoa=2
: a expressão é101
: palindrômicoa=3
: a expressão é12
: não palindrômicaa=4
: a expressão é11
: palindrômicoa=5
: a expressão é10
: não palindrômica
Portanto, o resultado para n=5
é 3
. Observe que o OEIS usa bases em 2, ..., n+1
vez de 1, ..., n
(obrigado, @beaker ). É equivalente, porque as expressões na base 1
e n+1
são sempre palindrômicas.
Os primeiros valores da sequência são
1, 1, 2, 2, 3, 2, 3, 3, 3, 4, 2, 3, 3, 3, 4, 4, 4, 4, 2, 4, 5, ...
A entrada é um número inteiro positivo n
. Saída são os primeiros n
termos da sequência.
Teoricamente, o programa deve funcionar (com tempo e memória suficientes) para quaisquer n
limitações causadas pelo seu tipo de dados padrão em qualquer cálculo interno.
Todas as funções são permitidas. O menor número de bytes vence.
fonte
Respostas:
Pitão, 13 bytes
A brevidade disso se deve principalmente ao comando
I
inestimável "I
nvariant".Se
True
é uma saída aceitável para1
,msm_IjdkSdSQ
(12 bytes) funciona.Experimente aqui .
fonte
_I#
vez def_IT
(não tenho 100% de certeza de que estava disponível, mas parece ter sido ).Gelatina, 14 bytes
Experimente online!
Versão não concorrente
O intérprete Jelly tinha um bug que tornava impossível a conversão para unário. Como foi corrigido agora, o código a seguir ( 12 bytes ) também realiza a tarefa em questão.
Experimente online!
Como funciona
fonte
MATL , 19
20bytesUsa a versão atual (10.1.0) , anterior a esse desafio.
Experimente online !
Explicação
fonte
CJam, 20 bytes
Teste aqui.
fonte
Haskell, 88 bytes
fonte
ES6, 149 bytes
Também funciona para bases> 36.
fonte
JavaScript (ES6),
10595 bytesExplicação
Pega um número de 1 a 36 (a limitação da conversão de base em JavaScript) e retorna uma matriz da sequência.
Função recursiva que verifica se há palíndromos quando uma base é passada, senão retorna a sequência se apenas
n
for passada.Teste
fonte
Gelatina , 8 bytes
Experimente online!
Versão possivelmente não concorrente:
Experimente online!
fonte
PHP, 73 + 1 bytes
trabalha para bases
1
para36
. Execute como pipe-nR
ou experimente online .fonte
PHP, 92 + 1 bytes:
funciona para todas as bases. Execute como pipe
-nR
ou experimente online .fonte
Python 2, 97 bytes
Meu primeiro post em Python, na verdade, meu primeiro código em Python
provavelmente tem algum potencial de golfe.
Experimente online!
fonte
> <>, 197 + 2 bytes
+2 para sinalizador -v
tio.run parece não retornar nenhuma saída para n> 1, mas você pode verificá-la em https://fishlanguage.com . A entrada entra na caixa "Pilha inicial".
fonte
Japonês , 10 bytes
Tente
Explicação
fonte
Python 2 , 85 bytes
Experimente online!
Espera um número inteiro como argumento.
Explicação:
fonte