À ne pas confondre avec le plus petit multiple commun .
Étant donné une liste d'entiers positifs avec plus d'un élément, renvoyez le produit le plus courant de deux éléments du tableau.
Par exemple, le MCM de la liste [2,3,4,5,6]
est 12
, comme une table de produits est:
2 3 4 5 6
---------------
2 | # 6 8 10 12
3 | # # 12 15 18
4 | # # # 20 24
5 | # # # # 30
6 | # # # # #
Merci DJMcMayhem pour la table
Comme cela 12
apparaît le plus souvent (deux fois comme 2*6
et 3*4
). Notez que nous n'incluons pas le produit d'un élément et lui-même, donc 2*2
ou 4*4
n'apparaissons pas dans cette liste. Cependant, les éléments identiques seront toujours multipliés, donc le tableau pour [2,3,3]
ressemble à:
2 3 3
----------
2 | # 6 6
3 | # # 9
3 | # # #
Avec le MCM 6
.
En cas d'égalité, vous pouvez retourner n'importe lequel des éléments liés ou une liste de tous.
- Il s'agit de code-golf , donc le nombre d'octets le plus court pour chaque langue gagne!
Cas de test:
[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
la source
la source
[3,3,3] -> 9
-à-d.). Avec tous vos cas de test actuels, filtrer toutes les paires où les éléments sont les mêmes (même pour les cas de test comme[2,3,3]
contenant les mêmes valeurs) contiendra toujours les résultats de test corrects, mais échouera pour ce cas de test car aucun ne restera après le filtrage.Réponses:
Brachylog , 11 octets
Essayez-le en ligne!
Explication
la source
R ,
545041 octetsEssayez-le en ligne!
Alternativement, pour
545344 octets:Essayez-le en ligne!
En principe, cette dernière version produit le résultat pertinent même sans la
names
fonction, mais suivie du nombre de produits les plus fréquents, ce qui n'est pas demandé ...Merci à CriminallyVulgar pour -4 et -1, et Giuseppe pour -9 sur les deux.
la source
combn(scan(),2,prod)
fonctionne au lieu d'utiliserapply
Gelée , 6 octets
Essayez-le en ligne! ou Découvrez la suite de tests .
Comment ça marche
la source
Pyth, 12 octets
Suite de tests
Tout d'abord, nous prenons les 2 combinaisons d'éléments de l'entrée sans remplacement (
.cQ2
). Ensuite, nous mappons chacune de ces paires à leur produit (*M
). Ensuite, nous remplaçons la variable d'entrée par la liste des produits (=
). Ensuite, nous trions la liste des produits par le nombre d'occurrences dans la liste des produits (o/QN
). Enfin, prenez l'élément final de la liste triée (e
).la source
MATL ,
87 octetsEssayez-le en ligne!
(-1 octet en utilisant la méthode de la réponse @Mr. Xcoder Jelly .)
Ancienne réponse:
8 octets
Essayez-le en ligne!
la source
05AB1E ,
86 octets-2 octets grâce à @Kaldo .
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
ù
.Mathematica, 32 octets
-17 octets (et un correctif) grâce à JungHwan Min .
Fonction pure. Prend une liste de nombres en entrée et renvoie la liste des MCM en sortie.
la source
{3, 3, 3}
. Corrigé:Commonest[1##&@@@#~Subsets~{2}]&
Subsets
cela ne comptait pas les répétitions comme éléments séparés. Il semble que ce soit le cas, alors merci!MATLAB, 43 octets
C'est aussi une sorte de virelangue!
Explication
la source
I'*I*1-eye
Pourquoi pas justeI'*I-eye
?Perl 6 ,
4138 octetsEssayez-le en ligne!
la source
:
.Stax ,
1210 octetsExécuter et déboguer
la source
Python 3 ,
7772 octetsEssayez-le en ligne!
la source
Attaché , 59 octets
Essayez-le en ligne!
Je travaille toujours un peu sur le golf, mais je pense que c'est presque optimal pour l'approche que j'ai choisie.
Explication
Il s'agit d'une composition de trois fonctions:
{Flat[UpperTriangle&1!Table&_!`*]^^0}
SortBy#`&&:`~
Last
La première fonction effectue l'essentiel du calcul:
Le second est un peu compliqué mais fait quelque chose d'assez simple. Tout d'abord, il est utile de savoir qu'il
f&n
s'agit d'une fonction qui, lorsqu'elle est appelée avec des arguments...x
, renvoief[...x, n]
.f&:n
est similaire, en revenantf[n, ...x]
. Maintenant, décomposons ceci:D'abord,
f#g
crée une fourchette. Avec entréen
, il revientf[n, g[n]]
. Cependant, dans ce cas,f
c'est la fonction~SortBy
.~f
inverse les arguments de la fonction. Cela signifie que~f#g
équivaut àf[g[n], n]
, ou ici,SortBy[(`& &: `~)[n], n]
.`& &: `~
suit le formulairef&:n
. Mais que sont`&
et`~
? Ce sont des "guillemets d'opérateur" et retournent une fonction équivalente à l'opérateur cité. Donc, dans ce cas,`&
c'est la même chose que${ x & y }
. Dans cet esprit, cette expression est équivalente à la suivante pour les opérateurs binaires:Cela donne la fonction
`~&x
, oùx
est le résultat de la première fonction.n ~ a
compte les occurrences den
ina
. Ainsi, cela renvoie une fonction qui compte les occurrences de l'argument dans le tableau calculé à partir de la fonction 1.Pour en revenir à
SortBy
, chaque élément du tableau est multiplié par le nombre de fois qu'il y apparaît.Enfin,
Last
prend l'élément qui se produit le plus. Les liens sont rompus par l'algorithme de tri.la source
[5, 2, 9, 10, 3, 4, 4, 4, 7] -> 16
au lieu de20
sans elle.JavaScript (ES6),
7270 octetsEssayez-le en ligne!
la source
Fusain , 24 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Alors que le tableau d'entrée n'est pas vide ...
... éclatez le dernier élément et multipliez le reste du tableau par cet élément ...
... et poussez les résultats dans la liste vide prédéfinie.
Comptez le nombre de fois que chaque produit apparaît dans la liste et prenez le maximum ...
... puis filtrez les produits dont le nombre est égal à ce maximum ...
... puis ouvrez le dernier élément et transformez-le en chaîne pour une impression implicite.
la source
Husk , 7 octets
Essayez-le en ligne!
Explication
la source
APL (Dyalog Unicode) ,
29 2719 octetsEssayez-le en ligne!
Tacit fn.
Merci à Adám pour la version tacite et 2 octets.
Merci à ngn pour 8 octets!
Comment:
la source
Japt ,
2016 octetsEssayez-le en ligne!
la source
CJam ,
7068 octetsEssayez-le en ligne!
Explication
Vous devrez faire défiler vers la droite pour voir les explications car le code est assez long, ainsi que les explications.
C'était un cauchemar absolu à écrire. CJam n'a pas de fonction PowerSet (contrairement à une tonne d'autres langues de golf - un excellent choix de ma part), ce qui signifie que j'ai dû trouver manuellement le PowerSet. Cependant, cela m'a donné la possibilité d'ignorer tout nombre non valide de facteurs, contrairement à d'autres réponses avec une fonction Powerset.
Cela devrait être jouable au golf, étant donné que je suis terrible à CJam.
Changements:
Helen a coupé 2 octets!
Ancien:
q',/S*~_,1-:L{LX-,0a\+[{X1++}*](;{_X=\_Y=@*\}fY}fX]~;]_{\_@e=}$\;_,1-=
Nouveau:
q',/S*~_,(:L{LX-,0a\+[{X1++}*](;{_X=\_Y=@*\}fY}fX]~;]_{\_@e=}$\;_,(=
En modifiant
1-
simplement le s,(
nous obtenons le même effet mais avec un nombre d'octets inférieur.la source
Java (JDK 10) , 132 octets
Essayez-le en ligne!
la source
Haskell ,
9694 octets-2 octets grâce à nimi (en utilisant à la
sortOn(0<$)
place delength
)!Essayez-le en ligne!
la source
MATLAB 39 octets
Consultez également la réponse de Jacob Watson
la source
b=triu(a'*a,1);
sauve 4 octets.triu
abord mais j'ai dérivé d'une manière ou d'une autreSQL Server, 93 octets
L'entrée est supposée provenir d'un tableau du formulaire
Exemple de population de table:
Explication:
Je suppose qu'une "liste d'entiers" aura un index qui leur est associé, qui dans mon cas est la colonne
i
. La colonnea
contient les valeurs de la liste.Je crée des produits de chaque paire, où la paire gauche vient dans la liste plus tôt que la bonne paire. Je regroupe ensuite le produit et trie par le numéro le plus peuplé.
Je suis un peu triste de ne pas avoir utilisé de clauses cte ou de partitionnement, mais elles étaient tout simplement trop longues.
SELECT
est un mot-clé très cher.Alternative, 183 octets
Si SQL ne parvient pas à avoir une colonne d'index distincte, voici une solution où je crée un index à l'aide de la
ROW_NUMBER
fonction. Personnellement, je ne me soucie pas de la commande, mais une commande est requise et l'utilisation de laa
colonne est la plus courte.la source
CJam , 29 octets
Essayez-le en ligne!
la source
Burlesque - 8 octets
Essayez-le en ligne ici.
(et oui, Burlesque a également une commande pour "l'élément le moins commun")
la source
C # (Visual C # Interactive Compiler) , 95 octets
Essayez-le en ligne!
Code moins golfé:
la source
PHP, 91 octets
prend l'entrée des arguments de la ligne de commande; courir avec
-nr
ou essayer en ligne .Utilisez PHP 7 pour éviter l'avertissement STRICT MODE.
la source
J,
29252423 octetsEssayez-le en ligne!
Comment
la source
Japt
-h
, 11 octetsEssayez-le
Essayez-le
la source
APL (NARS), 53 caractères, 106 octets
Tester:
la source