Dado um número n
, escreva uma função que encontre a menor base, b ≥ 2
como n
um palíndromo na baseb
. Por exemplo, uma entrada de 28
deve retornar a base, 3
pois a representação ternária de 28 é 1001. Embora 93
seja um palíndromo na base 2 e na base 5, a saída deve ser 2
desde 2 <5.
Entrada
Um número inteiro positivo n < 2^31
.
Resultado
Retorne a menor base de b ≥ 2
modo que a b
representação básica den
seja um palíndromo. Não assuma zeros à esquerda.
Amostras (entrada => saída):
11 => 10
32 => 7
59 => 4
111 => 6
Regras
O código mais curto vence.
code-golf
palindrome
base-conversion
ntomlin1996
fonte
fonte
n
pode ser 1 e 2 não é um palíndromo de base 1. No entanto, todo positivon
é umn + 1
palíndromo básico .Respostas:
CJam , 19 bytes / GolfScript, 23 bytes
ou
Experimente online:
Exemplos
Como funciona
Para o GolfScript,
q~
é~
,_
é.
,b
ébase
,W
é-1
eg
édo
.fonte
GolfScript, 20 caracteres
Uma abordagem diferente com o GolfScript que não o de Dennis . Evita o loop explícito caro em favor de um operador de localização . Experimente online .
fonte
x = 1
oux = 2
. Ambos sãox + 1
palíndromos básicos de um dígito , portanto,x))
devem corrigi-lo.Mathematica,
6766 bytesNão é possível competir com o GolfScript aqui em termos de tamanho do código, mas o resultado para 2 32 é basicamente retornado instantaneamente.
fonte
PalindromeQ
para a verificação reversa?)Japt ,
129 bytesA menos que eu tenha esquecido um truque (é tarde!), Isso deve funcionar para todos os números, inclusive pelo menos
2**53-1
.Nos meus testes (reconhecidamente limitados e inteiramente aleatórios), obtive resultados até a base (!) Até agora. Não é tão ruim quando você considera que o JavaScript apenas suporta nativamente bases para .
11601
310,515
2
36
Tente
Explicação
Entrada implícita de número inteiro
U
.Começando com
2
, retorne o primeiro número que retorna true quando passado pela função a seguir,X
sendo o número atualConverta
U
em uma matriz deX
dígitos base .Teste se essa matriz é um palíndromo.
fonte
N.ì(n)
poderia lidar com bases maiores que36
. Obrigado por isso.N.ì(n)
já que estamos usando números inteiros matérias ;-)Python 2 (83)
Não sei ao certo qual formato de entrada / saída a pergunta queria. Eu escrevi uma função. O código usa uma entrada opcional
b
para rastrear a base atual que está testando. Oswhile
loops convertem o número em uma lista de dígitos na baseb
.A última linha retorna
b
sel
é um palíndromo e tenta recursivamente a próximab
caso contrário. O truque de índice por booleano não funciona aqui porque faria com que ambas as opções fossem avaliadas independentemente do booleano e a recursão nunca terminaria.fonte
JavaScript, 88 bytes
Ungolfed:
fonte
Javascript, 105 bytes
JSFiddle: http://jsfiddle.net/wR4Wf/1/
Observe que essa implementação também funciona corretamente para grandes bases. Por exemplo,
f(10014)
retorna 1668 (10014 é 66 na base 1668).fonte
s/var b=2,c,d/b=d=2/
ganhar mais 6 bytes;) #Bash + coreutils, 100 bytes
Usa
dc
para fazer a formatação básica. O complicado é quedc
o formato é diferente para n> 16.Casos de teste:
fonte
J - 28 car
Explicado:
#.inv~
- Expanda o argumento esquerdo para a base no argumento direito.(-.@-:|.@)
- Retorne 0 se a expansão for palindrômica e 1 caso contrário.(1+]^:)
- Incremente o argumento correto em um se retornarmos 1, caso contrário, não tome nenhuma ação.^:_
- Repita o incremento acima até que não tome nenhuma ação.&2
- Prepare o argumento correto como 2, tornando isso uma função de um argumento.Exemplos:
fonte
2+1 i.~[#.inv"*(-:|.@)~2+i.
por 27 bytes. (Não quero postá-lo separadamente Eu só vai deixá-lo aqui..)R,
122bytes 95Solução de três anos em 122 bytes:
Com algumas explicações:
fonte
Casca ,
119 bytesObrigado @Zgarb por -2!
Experimente online!
Explicação
fonte
Nota: Pyth é mais recente que esta pergunta, portanto, esta resposta não é elegível para ganhar.
Pitão, 10 bytes
Experimente aqui.
fonte
Scala, 83 bytes
fonte
05AB1E , 8 bytes
Experimente online!
fonte
Perl 5 , 84 + 1 (-p) = 85 bytes
Experimente online!
fonte
JavaScript 72 bytes
fonte
Mathematica 42 bytes
Uma variação da entrada de Martin Ender. Faz uso de
IntegerReverse
(disponibilizado na versão 10.3) que dispensaIntegerDigits
.fonte
Java 8, 103 bytes
Explicação:
Experimente aqui.
fonte