Dado um número inteiro positivo N
, imprima o menor número inteiro positivo de forma que esse número seja um palíndromo (isto é, é o seu próprio reverso) e divisível por N
.
O palíndromo (ou seja, a saída) não deve precisar de um zero inicial para ser um palíndromo, por exemplo, 080
não é a resposta válida 16
.
A entrada nunca será um múltiplo de 10, devido ao motivo anterior.
Seu programa pode levar o tempo necessário, mesmo que, na prática, demore muito para gerar a resposta.
Entradas e saídas
- Você pode inserir a entrada
STDIN
como argumento de função ou algo semelhante. - Você pode imprimir a saída
STDOUT
, retorná-la de uma função ou algo semelhante. - As entradas e saídas devem estar na base decimal.
Casos de teste
N Output
1 1
2 2
16 272
17 272
42 252
111 111
302 87278
1234 28382
Pontuação
Isso é código-golfe , então a resposta mais curta em bytes vence.
N
Respostas:
2sable / 05AB1E , 6/7 bytes
2sable
Explicação
Experimente online
05AB1E
A diferença para o código 2sable é que a entrada é implícita apenas uma vez em 05AB1E, portanto, aqui precisamos
¹
obter a primeira entrada novamente.Experimente online
Salvo 1 byte com 2sable, conforme sugerido por Adnan
fonte
[DÂQ#+
.Haskell,
453734 bytesfonte
Pitão, 7 bytes
Experimente online: Demonstração
Explicação
fonte
Java,
16415912610894 bytesVersão Golfed:
Versão não destruída:
Agradeça a Emigna e Kevin Cruijssen por contribuir com melhorias e cortar os bytes quase pela metade :)
fonte
x % a == 0
meio redundante quando você inicializa x como ae apenas aumenta em a? Além disso, a comparação com a reversão da string pode ser feita enquanto condicional?import org.apache.commons.lang.StringUtils;
e usarorg.apache.commons.lang.StringUtils.reverse
diretamente.for(;;)
é mais curto quewhile(1>0)
. Não há necessidade de um programa completo, apenasint c(int a){...}
serviria como uma resposta válida, pois a pergunta tem a seguinte regra: " Você pode usar a entrada como argumento de função. Você pode retornar a saída de uma função. " @Emigna está realmente certo que a verificação do módulo não é necessária.x += a
). Não preciso verificar a divisibilidade :) e obrigado pelas dicas de golfe!C #,
10380 bytesUngolfed
fonte
x.ToString()
por 'x + "" `salvará um monte de caracteres.Python 2, 46 bytes
Ideone it!
Solução recursiva com
c
como contador.O caso
0
é interessante, porque, emborac=0
satisfaça a condição do palíndromo, ele não seria retornado, porqueccc and 0 or xxx
sempre retornaxxx
.fonte
c*(`c`[::-1]==`c`)or
.PHP, 39 bytes
;
depois de um tempo para não fazer nadastrrev
retornar string para trásMesmo comprimento com loop for
fonte
Braquilog , 8 bytes
Experimente online! (cerca de 5 segundos para
1234
)Verifique todos os casos de teste. (cerca de 20 segundos)
fonte
Javascript (ES6),
5551 bytes4 bytes graças a Neil.
fonte
+
parece desnecessário.(x,c=x)
permitir-lhe evitar o&&c
?c^[...c+""].reverse().join``?f(x,x+c):c
para salvar mais um byte.c-
funcionaria para números um pouco mais altos do quec^
, se necessário.Pyke,
119 bytesExperimente aqui!
fonte
C,
217189 bytesVersão autônoma:
Chame para uma versão da função:
Ungolfed:
Chame para uma função não destruída:
Eu incluí a versão autônoma para historicidade.
Este é o meu primeiro codegolf, qualquer comentário é bem-vindo!
fonte
main()
independentemente de suas preferências. Você não jogaria beisebol executando doze voltas antes de marcar "porque eu prefiro", você nunca alcançará com segurança. Esta é uma competição, e a regra principal é usar todos os meios necessários e legais para reduzir a contagem de bytes.int f(int a)
->f(a)
2) se precisar declarar algunsint
s, pode usar os parâmetros de função:int f(int a){int b;
->f(a,b){
3)sprintf
nunca retornará 0, então você pode usar nowhile
:while(1){sprintf(c,"%d",b);
->while(sprintf(c,"%d",b)){
4 ) use o K&R C para definir uma função para que você possa combinar com a minha segunda dica:int s(char*a){int b=strlen(a);for(int i=0
->s(a,b,i)char*a;{b=strlen(a);for(i=0;
R,
117113109101 bytesUngolfed
all(charToRaw(a)==rev(charToRaw(a)))
verifica se em cada posição doa
valor dea
e seu reverso são os mesmos (ou seja, sea
é palíndrico).Pode ser possível obter alguns bytes brincando com o
types
.fonte
Na verdade ,
1514 bytesSolicitado a resposta por Leaky Nun. Sugestões de golfe são bem-vindas. Experimente online!
Ungolfing
fonte
Haskell,
64 6356 bytesLigue com
(1!)16
ou simplesmente1!16
. Experimente em Ideone.fonte
VBSCRIPT, 47 bytes
destroçado
fonte
Perl, 25 bytes
Inclui +2 para
-ap
Execute com a entrada em STDIN:
palidiv.pl
:fonte
SILOS , 109 bytes
Experimente online!
fonte
Japonês , 14 bytes
Experimente online!
Obrigado ETHproductions pela ajuda! :)
fonte
MATL , 10 bytes
Experimente online!
fonte
PowerShell v2 +, 72 bytes
Muito tempo por causa de como a inversão é tratada no PowerShell - não muito bem. ;-)
Recebe entrada
$args[0]
, armazena em$i
(nossa variável de loop) e$n
(nossa entrada). Loops infinitamente, incrementando$i
em$n
cada vez que (a divisibilidade garantia).A cada iteração, verificamos se
$i
é um palíndromo. Há alguns truques acontecendo aqui, então deixe-me explicar. Primeiro$i
pegamos e estritamente com"$i"
. Isso é indexado por matriz na ordem inversa["$i".length..0]
antes de ser-join
editado novamente em uma string. Isso é alimentado no lado direito do-eq
operador de qualidade, que implicitamente lança a string de volta em um[int]
, já que esse é o operando do lado esquerdo. Nota: essa conversão tira quaisquer zeros à esquerda do palíndromo, mas, como é garantido que a entrada não é divisível10
, tudo bem.Então,
if
é um palíndromo, simplesmente colocamos$i
no oleoduto eexit
. A saída está implícita no final da execução.Casos de teste
fonte
MATLAB, 76 bytes
O formato da chamada é o
p(302)
resultado é uma sequência.Nada inteligente aqui. Faz uma pesquisa linear, usando as funções
num2str()
efliplr()
.Esse arranjo feio é um toque mais curto do que usar um
while(1) ... if ... break end
padrão.Ungolfed
fonte
Mathematica, 49 bytes
Inicia a pesquisa em
c = N
e incrementa,c
se não for um palíndromo, e não divisível porN
. Quando as condições são atendidas, as saídasc
.fonte
Gelatina, 12 bytes
Experimente online!
Explicação:
Este link leva 1 argumento. Eles
µ
o dividem em 4 partes. Começando pela última e movendo para a esquerda:fonte
Elixir , 75 bytes
fonte
Python 2,
6665 bytesi
é entrada ex
é (eventualmente) saídaDepois de rolar por outras respostas, encontrei uma resposta mais curta do Python 2, mas esforcei-me por minha solução, de modo que ela poderia ser lançada aqui. ¯ \ _ (ツ) _ / ¯
fonte
[::-1] else
.return x if x%i==0&&
x==
x[::-1]else f(i,x+1)
, o que significa que você pode transformá-lo em lambda e obter mais bytes de golfe?REXX, 46 bytes
fonte
Python 2 , 44 bytes
Experimente online!
Eu sei que a pergunta foi publicada há mais de seis meses, mas foi mais curta do que qualquer outro envio do Python.
fonte
QBIC , 29 bytes
Explicação:
fonte
Perl 6 , 35 bytes
Explicação:
fonte
Perl 6, 39 bytes
(33 não incluindo o
my &f=
)fonte