Com base em uma mensagem de bate-papo
O desafio
Dado um número de entrada n > 9
, construa seu reverso, ignorando os zeros à esquerda. Em seguida, construa uma lista de todos os fatores primos que o número e seu reverso não têm em comum. Multiplique esses fatores para criar o número incomum de fator de da entrada.
Ou, em outras palavras: se rev(n)
denota a reversão decimal de número inteiro n
, calcule o produto de n
e rev(n)
dividido pelo quadrado dagcd(n, rev(n))
.
Saída esse número.
Exemplos trabalhados
Por exemplo, 2244
reverte para 4422
. Os fatores primos do primeiro são [2, 2, 3, 11, 17]
e os fatores primos do reverso são [2, 3, 11, 67]
. Os números que não estão em multiplicidades comuns são [2, 17, 67]
, então2278
como a saída.
Para outro exemplo, 1234
reverte para 4321
. O produto é 5332114
e o GCD é 1
, então a saída é 5332114
.
Esclarecimentos adicionais
Obviamente, um número palíndrico terá todos os seus fatores em comum com o seu inverso; portanto, nesse caso, a saída é 1
( n*n/n^2
). Obviamente, também é possível que a saída seja a multiplicação de todos os fatores (ou seja, o gcd é 1 - a entrada e seu reverso são co-primos), como no caso do 1234
exemplo.
Regras
- Supõe-se que a entrada e a saída se encaixem no tipo inteiro nativo do seu idioma.
- A entrada e saída podem ser fornecidas em qualquer formato conveniente .
- Um programa completo ou uma função são aceitáveis. Se uma função, você pode retornar a saída em vez de imprimi-la.
- Se possível, inclua um link para um ambiente de teste on-line para que outras pessoas possam experimentar seu código!
- Lacunas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
Exemplos
in
out
17
1207
208
41704
315
1995
23876
101222302
fonte
1995
(eu acredito)Respostas:
05AB1E , 6 bytes
Código
Usa a codificação 05AB1E . Experimente online!
Explicação
fonte
J, 18 bytes
Experimente online!
Como alternativa (crédito à abordagem de @ Adnan para a segunda),
J, 15 bytes (solução de @ miles)
Explicação
Essa é apenas uma implementação direta do algoritmo fornecido pelo OP.
Explicação, a solução @ miles
Muito esperto.
fonte
*/@(,%+.)|.&.":
Mathematica, 33 bytes
Experimente online!
fonte
Geléia , 8 bytes
Experimente online!
fonte
DU
em vez deṚ
)Ṛ
em um número inteiro reverte os dígitos, mas não é convertido novamente em um número inteiro.JavaScript (ES7),
6764 bytesTantos bytes apenas para inverter o número :(
Recebe a entrada como uma sequência.
Tente
fonte
Haskell, 44 bytes
Experimente online!
fonte
R ,
10889 bytes-19 bytes graças ao plannapus por seu algoritmo gcd
Isso tentará alocar pelo menos um vetor de tamanho
4*n
bytes (e acho que até 4); portanto, isso gerará um erro de memória para arquivos suficientemente grandes.n
.Experimente online!
fonte
Python 3 ,
7368 bytes-5 bytes graças ao Sr. Xcoder.
Experimente online!
fonte
MATL ,
131211 bytesExperimente online! Ou verifique todos os casos de teste .
Explicação
fonte
Neim , 11 bytes
Experimente online!
Não há GCD embutido. ; -;
fonte
Casca , 10 bytes
Experimente online!
-1 graças a H.PWiz .
-1 graças a Zgarb .
fonte
Japonês ,
131211 bytesTente
Explicação
Entrada implícita de número inteiro
U
. A linha vazia no início impede a substituição da seguinte linhaU
Converta
U
em uma string (s
), inverta (w
), converta novamente em um número inteiro e atribua a variávelV
.Multiplique
U
porV
.Dividir.
GCD de
V
eU
.Quadrado. Saída implícita do número inteiro resultante.
Alternativa, 13 bytes
Só porque eu gosto de poder usar
N
.Tente
fonte
Pitão , 13 bytes
Experimente aqui!
Pitão , 15 bytes
Isso usa a abordagem de Adnan e recebe a entrada como uma String.
Experimente aqui
fonte
Código de máquina x86, 39 bytes
A função acima calcula o "número de fator incomum" do parâmetro de entrada especificado. Após a convenção de chamada __fastcall baseada em registro , o parâmetro é passado no
ECX
registro. O resultado é retornado noEAX
registro, como em todas as convenções de chamada x86.Experimente online!
Demorou muito tempo para escrever de uma forma tão compacta, mas foi um exercício divertido. Muitas contorções para obter o agendamento de registro mais ideal possível, dentro das restrições dos
DIV
operandos implícitos da instrução x86 e tentando usar codificações curtasMUL
eXCHG
instruções sempre que possível. Eu ficaria muito curioso para ver se alguém pode pensar em outra maneira de reduzi-lo ainda mais. Meu cérebro estava muito frito no final. Agradeça a um compilador na próxima vez que você vir um! (Embora esse seja um código muito melhor do que o que um compilador geraria ... Especialmente se você o ajustasse um pouco sem restrições de tamanho, removendo coisas assimXCHG
.)fonte
Perl 5, 72 bytes
71 bytes of code + 1 flag (
-p
)Try it online!
fonte
Pyke, 8 bytes
Try it here!
Takes input as a string.
fonte
Python 2, 70 bytes
Thanks to i cri everytim.
Try it online!
Python 2, 77 bytes
Note that in Python 2, you cannot use the
math.gcd()
method, and you must do it "by hand".Try it online!
fonte
gcd
asfractions.gcd
.math.gcd
.Ohm, 9 bytes
Try it online!
fonte
Java 8,
158150148138125123116107+ 19bytesTry it online!
fonte
t!=0
byt>0
, since t will never be negative.f*r/(i*i)
is the same asf/i*r/i
. You can dropf=t;
andr=i;
if you chain the assignment ofi
andt
.while(t>0)t=i%(i=t);
(-11 bytes).