Dado un número natural, n
escriba un programa o función para obtener una lista de todas las multiplicaciones posibles de dos factores que se pueden usar para lograr n
. Para entender mejor lo que se pretende se puede ir a http://factornumber.com/?page=16777216 para ver cuando n
es 16777216
que obtenemos la siguiente lista:
2 × 8388608
4 × 4194304
8 × 2097152
16 × 1048576
32 × 524288
64 × 262144
128 × 131072
256 × 65536
512 × 32768
1024 × 16384
2048 × 8192
4096 × 4096
No es necesario imprimir cosas bonitas como aquí. El requisito es que cada entrada (par de factores) se distinga bien entre sí y dentro de cada par, el primer factor también se distingue bien del otro. Si elige devolver una lista / matriz, el elemento interno puede ser una lista / matriz con dos elementos, o alguna estructura de su lenguaje que admita un par de cosas como C ++ std::pair
.
No imprima la multiplicación por 1 entrada, ni repita las entradas con el primer factor conmutado por el segundo, ya que son bastante inútiles.
Sin ganador; será un código de golf por idioma.
fuente
30
?Respuestas:
Java (OpenJDK 8) ,
816665 bytes++j<=i/j
->j++<i/j
.Pruébalo en línea!
Viejo (para referencia)
Java (OpenJDK 8) , 126 bytes
Pruébalo en línea!
Primer envío de codegolf y primer uso de lambda. Yo futuro, perdóname por el código.
fuente
05AB1E , 8 bytes
Pruébalo en línea!
fuente
C (gcc) ,
585453 bytesPruébalo en línea!
fuente
Python 2 , 51 bytes
Pruébalo en línea!
51 bytes (gracias a Luis Mendo por un byte)
Pruébalo en línea!
51 bytes
Pruébalo en línea!
fuente
[f]
.lambda n:[(n/k,k)for k in range(1,n)if(k*k<=n)>n%k]
Haskell, 38 bytes
Pruébalo en línea!
fuente
APL (Dyalog) , 28 bytes
Pruébalo en línea!
fuente
Perl 6 , 38 bytes
Intentalo
Expandido:
fuente
Brachylog , 8 bytes
Pruébalo en línea!
Explicación
La
~×
parte no incluye 1s en su salida, por lo que para la entrada N da [N] en lugar de [1, N] , que luego se seleccionaĊ
. No estoy completamente seguro de por qué≜
es necesario ...fuente
≜
es necesaria porque de lo contrario no hay puntos de elección paraᵘ
: una lista de longitud-2 cuyo producto es la entrada es la única respuesta si en realidad no solicita los valores de la lista.Japt , 9 bytes
¡Pruébalo en línea! Devuelve una matriz de matrices, con algunos nulos al final;
-R
bandera agregada para mostrar la salida más claramente.fuente
null
s al final.Jalea , 8 bytes
Un enlace monádico que toma un número y devuelve una lista de listas (pares) de números.
Pruébalo en línea! (se agota el tiempo de espera de TIO para el
16777216
ejemplo, ya que crearía una lista de 68.7 mil millones de pares y se filtraría a aquellos con el producto correcto)¿Cómo?
*
Ḋ
, dequeue, hace implícitamente un rango de una entrada numérica antes de actuar, y la función de rango pone implícitamente su entrada, por lo que, por ejemplo, conn=24
el resultado de½
es4.898...
; el rango se vuelve[1,2,3,4]
; y el resultado retrasado es[2,3,4]
** De manera similar a lo anterior, el
p
producto cartesiano crea rangos para la entrada numérica; aquí, el argumento correcto es,n
por lo tanto, el argumento correcto se convierte en[1,2,3,...,n]
anterior a que tenga lugar el producto cartisiano real.fuente
Casco , 8 bytes
Pruébalo en línea!
Explicación
fuente
JavaScript (ES6), 55 bytes
Manifestación
Mostrar fragmento de código
¡Pruébelo en línea!
fuente
6
?Python 2 , 59 bytes
Pruébalo en línea!
fuente
range(2,N)
y almacenarlo como una lista, pero la memoria asignada no es suficiente. Uno podría intentar reemplazarrange
conxrange
(generador de rango de Python 2), aunque esto excede el minuto de tiempo de ejecución máximo de TIO. En una máquina con suficiente memoria y tiempo, este programa debe finalizar y devolver la respuesta correcta.Jalea , 9 bytes
Pruébalo en línea!
fuente
Octava , 42 bytes
Pruébalo en línea!
fuente
PHP, 70 bytes
Como cadena (70 bytes):
Como volcado de matriz (71 bytes):
(No estoy seguro de si puedo usar return $ b; en lugar de print_r ya que ya no genera la matriz, de lo contrario, puedo guardar 2 bytes aquí).
La matriz da los resultados como:
fuente
Jalea , 12 bytes
Pruébalo en línea!
Cómo funciona
fuente
Wolfram Language (Mathematica) , 41 bytes
Pruébalo en línea!
es elFunction
operador, que introduce una función sin nombre con parámetro con nombren
.fuente
Factor , 58
Bueno, tiene que haber algún factor en esta pregunta.
Es una cita
call
con el número en la pila, deja unassoc
(un conjunto de pares) en la pila.Nunca estoy seguro de si todas las importaciones cuentan o no, ya que son parte del lenguaje. Este usa:
(Si cuentan, debería buscar una solución más larga con importaciones más cortas, lo cual es un poco tonto)
Como una palabra:
fuente
Ruby , 43 bytes
Pruébalo en línea!
Cómo funciona:
Para cada número hasta sqrt (n), genere el par
[[x, n/x]]
, luego tome eln%x
elemento th de esta matriz. Sin%x==0
es así[x, n/x]
, de lo contrario lo esnil
. cuando termine, elimine todonil
de la lista.fuente
Pari / GP ,
493438 bytesPruébalo en línea!
Establezca la notación de constructor para todos los pares
[d, n/d]
donde sed
ejecuta a través de todos los divisoresd
den
sujeto ad > 1
yd <= n/d
.Gran mejora por alephalpha.
fuente
n->[[d,n/d]|d<-divisors(n),d<=n/d]
1
.Casco ,
1412 bytesPruébalo en línea!
Explicación
fuente
APL + WIN, 32 bytes
Explicación:
fuente
Agregar ++ ,
1815 bytesPruébalo en línea!
Cómo funciona
fuente
Mathematica, 53 bytes
Pruébalo en línea!
fuente
Befunge-93, 56 bytes
Pruébalo en línea
fuente
Julia 0.6 , 41 bytes
Pruébalo en línea!
Redefine el operador unario incorporado
~
y utiliza una comprensión de matriz para generar la salida.div(x,y)
es necesario para la división de enteros.x/y
ahorra 5 bytes pero la salida es~4=(2,2.0)
.Int(floor(√x))
.fuente
APL NARS 99 caracteres
9 + 46 + 41 + 3 = 99 Prueba: (donde no imprime nada, devuelve algo que devuelve ⍬ la lista nula que hay que considerar como "sin solución")
fuente
Pyt ,
6765 bytesEstoy bastante seguro de que esto se puede jugar al golf.
Básicamente, el algoritmo genera una lista de todos los divisores de la entrada (llamémosla n ), hace la misma lista, pero invertida, intercala los dos (por ejemplo, si n = 24, entonces, en este punto, tiene [ 1,24,2,12,3,8,4,6,6,4,8,3,12,2,24,1]) e imprime los elementos desde el índice 2 hasta la mitad de la longitud de la matriz, imprimiendo cada uno número en una nueva línea, y con una nueva línea adicional entre cada par.
La mayor parte del trabajo se realiza en la gestión real de la pila.
Se guardaron 2 bytes utilizando la función de incremento.
fuente
Perl 5, 50 bytes
Sin golf:
Pruébalo en línea .
fuente