No debe confundirse con el mínimo común múltiplo .
Dada una lista de enteros positivos con más de un elemento, devuelve el producto más común de dos elementos en la matriz.
Por ejemplo, el MCM de la lista [2,3,4,5,6]
es 12
, como una tabla de productos, es:
2 3 4 5 6
---------------
2 | # 6 8 10 12
3 | # # 12 15 18
4 | # # # 20 24
5 | # # # # 30
6 | # # # # #
Gracias DJMcMayhem por la mesa
Como 12
aparece la mayoría de las veces (dos veces como 2*6
y 3*4
). Tenga en cuenta que no estamos incluyendo el producto de un elemento y en sí, por lo que 2*2
o 4*4
no no aparece en esta lista. Sin embargo, los elementos idénticos se seguirán multiplicando, por lo que la tabla para [2,3,3]
parece:
2 3 3
----------
2 | # 6 6
3 | # # 9
3 | # # #
Con el ser MCM 6
.
En caso de empate, puede devolver cualquiera de los elementos vinculados o una lista de todos ellos.
- Este es el código de golf , por lo que gana el recuento de bytes más corto para cada idioma.
Casos de prueba:
[2,3,4,5,6] -> 12
[7,2] -> 14
[2,3,3] -> 6
[3,3,3] -> 9
[1,1,1,1,2,2] -> 2
[6,200,10,120] -> 1200
[2,3,4,5,6,7,8,8] -> 24
[5,2,9,10,3,4,4,4,7] -> 20
[9,7,10,9,7,8,5,10,1] -> 63, 70, 90 or [63,70,90]
code-golf
array-manipulation
Jo King
fuente
fuente
[3,3,3] -> 9
). Con todos sus casos de prueba actuales filtrando cualquier par donde los elementos son iguales (incluso para casos de prueba como que[2,3,3]
contienen los mismos valores) aún se mantendrán los resultados de prueba correctos, pero fallará para este caso de prueba porque no quedará ninguno después del filtrado.Respuestas:
Brachylog , 11 bytes
Pruébalo en línea!
Explicación
fuente
R ,
545041 bytesPruébalo en línea!
Alternativamente, para
545344 bytes:Pruébalo en línea!
En principio, la última versión genera el resultado relevante incluso sin la
names
función, pero seguido por el recuento de los productos más frecuentes, que no se solicita ...Gracias a CriminallyVulgar por -4 y -1, y Giuseppe por -9 en ambos.
fuente
combn(scan(),2,prod)
funciona en lugar de usarapply
Jalea , 6 bytes
Pruébalo en línea! o Echa un vistazo a la suite de prueba .
Cómo funciona
fuente
Pyth, 12 bytes
Banco de pruebas
Primero, tomamos las 2 combinaciones de elementos de la entrada sin reemplazo (
.cQ2
). Luego, asignamos cada uno de estos pares a su producto (*M
). A continuación, sobrescribimos la variable de entrada con la lista de productos (=
). A continuación, ordenamos la lista de productos por el número de ocurrencias en la lista de productos (o/QN
). Finalmente, tome el elemento final de la lista ordenada (e
).fuente
MATL ,
87 bytesPruébalo en línea!
(-1 byte usando el método de @Mr. Xcoder's Jelly answer .)
Respuesta anterior:
8 bytes
Pruébalo en línea!
fuente
05AB1E ,
86 bytes-2 bytes gracias a @Kaldo .
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
ù
.Mathematica, 32 bytes
-17 bytes (y una solución) gracias a JungHwan Min .
Pura función. Toma una lista de números como entrada y devuelve la lista de MCM como salida.
fuente
{3, 3, 3}
. Corregido:Commonest[1##&@@@#~Subsets~{2}]&
Subsets
no contaba las repeticiones como elementos separados. Sin embargo, parece que sí, ¡así que gracias!MATLAB, 43 bytes
¡También es una especie de trabalenguas!
Explicación
fuente
I'*I*1-eye
¿Por qué no soloI'*I-eye
?Perl 6 ,
4138 bytesPruébalo en línea!
fuente
:
.Stax ,
1210 bytesEjecutar y depurarlo
fuente
Python 3 ,
7772 bytesPruébalo en línea!
fuente
Adjunto , 59 bytes
Pruébalo en línea!
Todavía estoy trabajando en jugar golf un poco, pero creo que esto es casi óptimo para el enfoque que he elegido.
Explicación
Esta es una composición de tres funciones:
{Flat[UpperTriangle&1!Table&_!`*]^^0}
SortBy#`&&:`~
Last
La primera función realiza la mayor parte del cálculo:
El segundo es un poco complicado pero hace algo bastante simple. Primero, es útil saber que
f&n
es una función que, cuando se llama con argumentos...x
, devuelvef[...x, n]
.f&:n
Es similar, volviendof[n, ...x]
. Ahora, descompongamos esto:Primero,
f#g
crea un tenedor. Con entradan
, vuelvef[n, g[n]]
. Sin embargo, en este caso,f
es la función~SortBy
.~f
invierte los argumentos de la función. Esto significa que~f#g
es equivalente af[g[n], n]
, o aquíSortBy[(`& &: `~)[n], n]
,.`& &: `~
la siguiente formaf&:n
. Pero que son`&
y`~
? Son "comillas de operador" y devuelven una función equivalente al operador citado. Entonces, en este caso,`&
es lo mismo que${ x & y }
. Con eso en mente, esta expresión es equivalente a la siguiente para operadores binarios:Esto produce la función
`~&x
, dondex
es el resultado de la primera función.n ~ a
cuenta las ocurrencias den
ina
. Entonces, esto devuelve una función que cuenta las ocurrencias del argumento en la matriz calculada desde la función 1.Volviendo a
SortBy
, este cada elemento en la matriz por el número de veces que aparece en él.Finalmente,
Last
toma el elemento que más ocurre. Los lazos se rompen por el algoritmo de clasificación.fuente
[5, 2, 9, 10, 3, 4, 4, 4, 7] -> 16
en lugar de20
sin ella.JavaScript (ES6),
7270 bytesPruébalo en línea!
fuente
Carbón de leña , 24 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Mientras la matriz de entrada no está vacía ...
... haga estallar el último elemento y multiplique el resto de la matriz por ese elemento ...
... y empuje los resultados a la lista vacía predefinida.
Cuente la cantidad de veces que cada producto aparece en la lista y tome el máximo ...
... luego filtre los productos cuyo recuento es igual a ese máximo ...
... luego haga estallar el último elemento y lo convierta en cadena para impresión implícita.
fuente
Casco , 7 bytes
Pruébalo en línea!
Explicación
fuente
APL (Dyalog Unicode) ,
29 2719 bytesPruébalo en línea!
Tácito fn.
Gracias a Adám por la versión tácita y 2 bytes.
¡Gracias a ngn por 8 bytes!
Cómo:
fuente
Japt ,
2016 bytesPruébalo en línea!
fuente
CJam ,
7068 bytesPruébalo en línea!
Explicación
Deberá desplazarse hacia la derecha para ver las explicaciones, ya que el código es bastante largo, así como las explicaciones.
Esta fue una pesadilla absoluta para escribir. CJam no tiene una función de powerset (a diferencia de una tonelada de otros idiomas de golf, una gran elección por mi parte), lo que significa que tuve que encontrar manualmente el powerset. Sin embargo, esto me dio la oportunidad de ignorar cualquier número inválido de factores, a diferencia de otras respuestas con una función powerset.
Esto debería ser golfable, considerando que soy terrible en CJam.
Cambios:
¡Helen cortó 2 bytes!
Viejo:
q',/S*~_,1-:L{LX-,0a\+[{X1++}*](;{_X=\_Y=@*\}fY}fX]~;]_{\_@e=}$\;_,1-=
nuevo:
q',/S*~_,(:L{LX-,0a\+[{X1++}*](;{_X=\_Y=@*\}fY}fX]~;]_{\_@e=}$\;_,(=
Al cambiar
1-
s simplemente(
, obtenemos el mismo efecto pero con un recuento de bytes más bajo.fuente
Java (JDK 10) , 132 bytes
Pruébalo en línea!
fuente
Haskell ,
9694 bytes-2 bytes gracias a nimi (usando en
sortOn(0<$)
lugar delength
)Pruébalo en línea!
fuente
MATLAB 39 bytes
También mira la respuesta de Jacob Watson
fuente
b=triu(a'*a,1);
ahorra 4 bytes.triu
intentado inicialmente, pero me alejé de alguna maneraSQL Server, 93 bytes
Se supone que la entrada proviene de una tabla de la forma
Ejemplo de población de tabla:
Explicación:
Supongo que una "lista de enteros" tendrá un índice asociado con ellos, que en mi caso es la columna
i
. La columnaa
contiene los valores de la lista.Creo productos de cada par, donde el par izquierdo aparece en la lista antes que el par derecho. Luego, agrupo el producto y clasifico por el número más poblado.
Estoy un poco triste porque no pude usar ninguna cláusula cte o de partición, pero fueron demasiado largas.
SELECT
Es una palabra clave muy cara.Alternativa, 183 bytes
Si SQL no llega a tener una columna de índice separada, aquí hay una solución donde creo un índice usando la
ROW_NUMBER
función. Personalmente no me importa el pedido, pero se requiere un pedido y el uso de laa
columna es el más corto.fuente
CJam , 29 bytes
Pruébalo en línea!
fuente
Burlesque - 8 bytes
Pruébelo en línea aquí.
(y sí, Burlesque también tiene un comando para "elemento menos común")
fuente
C # (compilador interactivo de Visual C #) , 95 bytes
Pruébalo en línea!
Menos código de golf:
fuente
PHP, 91 bytes
toma datos de los argumentos de la línea de comandos; ejecutar
-nr
o probarlo en línea .Use PHP 7 para evitar la advertencia de MODO ESTRICTO.
fuente
J,
29252423 bytesPruébalo en línea!
cómo
fuente
Japt
-h
, 11 bytesIntentalo
Intentalo
fuente
APL (NARS), 53 caracteres, 106 bytes
Prueba:
fuente