Basado en un mensaje de chat
El reto
Dado un número de entrada n > 9
, construya su reverso, ignorando los ceros iniciales. Luego, construya una lista de todos los factores primos que el número y su reverso no tienen en común. Multiplique esos factores para crear el Número de factor poco común de la entrada.
O, para decirlo de otra manera: si rev(n)
denota la inversión decimal del número entero n
, calcule el producto de n
y rev(n)
dividido por el cuadrado de gcd(n, rev(n))
.
Salida de ese número.
Ejemplos trabajados
Por ejemplo, 2244
revierte a 4422
. Los factores primos del primero son [2, 2, 3, 11, 17]
y los factores primos del reverso son [2, 3, 11, 67]
. Los números que no están en multiplicidades comunes son [2, 17, 67]
, también lo 2278
es la salida.
Para otro ejemplo, 1234
revierte a 4321
. El producto es 5332114
y el GCD es 1
, por lo que la salida es 5332114
.
Aclaraciones adicionales
Obviamente, un número palindrómico tendrá todos sus factores en común con su inverso, por lo que en tal caso la salida es 1
( n*n/n^2
). Obviamente, también es posible que la salida sea la multiplicación de todos los factores (es decir, el mcd es 1 - la entrada y su reverso son co-primos), como en el caso del 1234
ejemplo.
Reglas
- Se puede suponer que la entrada y la salida se ajustan al tipo de entero nativo de su idioma.
- La entrada y la salida se pueden dar en cualquier formato conveniente .
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- Si es posible, incluya un enlace a un entorno de prueba en línea para que otras personas puedan probar su código.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
Ejemplos
in
out
17
1207
208
41704
315
1995
23876
101222302
fuente
1995
(creo)Respuestas:
05AB1E , 6 bytes
Código
Utiliza el 05AB1E codificación . Pruébalo en línea!
Explicación
fuente
J, 18 bytes
Pruébalo en línea!
Alternativamente (crédito al enfoque de @ Adnan para el segundo),
J, 15 bytes (solución de @ miles)
Explicación
Esta es solo una implementación sencilla del algoritmo proporcionado por el OP.
Explicación, la solución de @ miles
Muy inteligente.
fuente
*/@(,%+.)|.&.":
Mathematica, 33 bytes
Pruébalo en línea!
fuente
Jalea , 8 bytes
Pruébalo en línea!
fuente
DU
lugar deṚ
)Ṛ
en un número entero invierte los dígitos, pero no vuelve a convertirlo en un número entero.JavaScript (ES7),
6764 bytesTantos bytes solo para invertir el número :(
Toma la entrada como una cadena.
Intentalo
fuente
Haskell, 44 bytes
Pruébalo en línea!
fuente
R ,
10889 bytes-19 bytes gracias a plannapus por su algoritmo gcd
Esto intentará asignar al menos un vector de
4*n
bytes de tamaño (y creo que hasta 4), por lo que arrojará un error de memoria para suficientemente granden
.Pruébalo en línea!
fuente
Python 3 ,
7368 bytes-5 bytes gracias al Sr. Xcoder.
Pruébalo en línea!
fuente
MATL ,
131211 bytesPruébalo en línea! O verificar todos los casos de prueba .
Explicación
fuente
Neim , 11 bytes
Pruébalo en línea!
Sin GCD incorporado. ; -;
fuente
Casco , 10 bytes
Pruébalo en línea!
-1 gracias a H.PWiz .
-1 gracias a Zgarb .
fuente
Japt ,
131211 bytesIntentalo
Explicación
Entrada implícita de entero
U
. La línea vacía al principio evita que la siguiente línea se sobrescribaU
Convierte
U
a una cadena (s
), inviértela (w
), vuelve a convertir a un entero y asigna a variableV
.Multiplicar
U
porV
.Dividir.
MCD de
V
yU
.Cuadrado Salida implícita del entero resultante.
Alternativa, 13 bytes
Solo porque me gusta poder usar
N
.Intentalo
fuente
Pyth , 13 bytes
Pruébalo aquí!
Pyth , 15 bytes
Esto utiliza el enfoque de Adnan y toma la entrada como una cadena.
Pruébalo aquí
fuente
Código de máquina x86, 39 bytes
La función anterior calcula el "número de factor poco común" del parámetro de entrada especificado. Siguiendo la convención de llamada __fastcall basada en el
ECX
registro , el parámetro se pasa en el registro. El resultado se devuelve en elEAX
registro, como con todas las convenciones de llamadas x86.Pruébalo en línea!
Tomó mucho tiempo escribir en una forma tan compacta, pero fue un ejercicio divertido. Muchas contorsiones para obtener la programación de registro más óptima posible, dentro de las restricciones de los
DIV
operandos implícitos de la instrucción x86 y tratando de usar codificaciones cortas deMUL
yXCHG
instrucciones siempre que sea posible. Me daría mucha curiosidad ver si alguien puede pensar en otra forma de acortarlo aún más. Mi cerebro estaba bastante frito al final. ¡Agradezca a un compilador la próxima vez que vea uno! (Aunque este es un código mucho mejor que el que generaría un compilador ... Especialmente si lo modifica un poco sin restricciones de tamaño, eliminando cosas comoXCHG
).fuente
Perl 5 , 72 bytes
71 bytes de código + 1 bandera (
-p
)Pruébalo en línea!
fuente
Pyke , 8 bytes
Pruébalo aquí!
Toma la entrada como una cadena.
fuente
Python 2 , 70 bytes
Gracias a i cri everytim .
Pruébalo en línea!
Python 2 , 77 bytes
Tenga en cuenta que en Python 2, no puede usar el
math.gcd()
método, y debe hacerlo "a mano".Pruébalo en línea!
fuente
gcd
comofractions.gcd
.math.gcd
.Ohm , 9 bytes
Pruébalo en línea!
fuente
Java 8,
158,150,148,138,125,123116107+ 19bytesPruébalo en línea!
fuente
t!=0
port>0
, ya que t nunca será negativo.f*r/(i*i)
es el mismo quef/i*r/i
. Puede soltarf=t;
yr=i;
si encadena la asignación dei
yt
.while(t>0)t=i%(i=t);
(-11 bytes).