Étant donné une matrice non vide d'entiers non négatifs, répondez aux lignes uniques qui contribuent le plus à la somme totale des éléments de la matrice.
Répondez par toute indication raisonnable, par exemple un masque de l'ordre d'apparition des lignes uniques (ou ordre de tri), ou des indices (basés sur zéro ou un) de ceux-ci, ou une sous-matrice composée des lignes (dans n'importe quel ordre) ou certains sorte de construction de dictionnaire… - mais expliquez-le!
Exemples
[[1,2,3],[2,0,4],[6,3,0],[2,0,4],[6,3,0],[2,0,4]]
:
Les lignes uniques sont [1,2,3]
, [2,0,4]
et[6,3,0]
chacun contribuant respectivement 6, 6 et 9 , chaque fois qu'ils se produisent. Cependant, ils se produisent respectivement une, trois et deux fois, de sorte que toutes leurs occurrences respectives contribuent 6, 18 et 18 au total (42), de sorte que les deux dernières lignes sont celles qui contribuent le plus. Les réponses valables sont donc:
[false,true,true]
masque dans l'apparence / l'ordre de tri ou
[1,2]
/ [2,3]
zéro / un index basé sur les
[[2,0,4],[6,3,0]]
lignes ci-dessus ou réelles
⋮
[[1,2],[3,1],[2,3],[1,2],[3,1],[2,3],[1,2]]
[false,false,true]
(ordre d'apparition) / [false,true,false]
(ordre de tri)
[2]
/ [3]
(ordre d'apparition) / [1]
/ [2]
(ordre de tri)
[[2,3]]
⋮
Pyth , 9 octets
-1 merci à FryAmTheEggman!
Essayez-le en ligne!
la source
k
n'est pas nécessaire..M*sZ/QZ{
Semble également être une solution de même longueur alors.R , 64 octets
Essayez-le en ligne!
Renvoie un vecteur booléen avec VRAI / FAUX dans l'ordre de tri (lexicographique).
Les lignes uniques sont affichées sous forme de noms de vecteur, il est donc facile d'identifier les plus contributives.
la source
Python 3 ,
153145129 octets-8 octets grâce à @Mr. Xcoder!
Essayez-le en ligne!
la source
Haskell, 60 octets
Renvoie une liste des lignes.
la source
Fusain , 25 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Le format de sortie par défaut est chaque élément de ligne sur sa propre ligne et les lignes à double interligne. Explication:
la source
Mathematica, 48 octets
ou
où (par exemple)
la source
SortBy[Gather@m,Total@*Flatten][[-1,1]]
TakeLargestBy[Gather[m], Total[#, 2] &, 1][[1, 1]] /@ m
JavaScript (ES6), 88 octets
Génère un tableau de valeurs booléennes dans l'ordre d'apparence.
Essayez-le en ligne!
la source
Groovy , 76 octets
Essayez-le en ligne!
Renvoie en tant que booléens dans l'ordre de tri
la source
Scala , 63 octets
Essayez-le en ligne!
Renvoie les booléens dans l'ordre d'apparition
la source
APL (Dyalog Unicode) , 12 octets
Essayez-le en ligne!
-2 merci à Adám . -1 grâce à un format de sortie alternatif.
la source
Wolfram Language (Mathematica) , 42 octets
Essayez-le en ligne!
la source
Python 2 ,
8178 octetsEssayez-le en ligne!
3 octets de thx à Black Owl Kai .
Étant donné une collection de tuples, la sortie est un ensemble de ces tuples ayant la propriété maximale souhaitée.
la source
Japt ,
1311 octets-2 octets de @Shaggy
Essayez-le en ligne!
la source
C # (Visual C # Interactive Compiler) , 126 octets
Essayez-le en ligne!
La plupart de ce code est dépensé pour supprimer toutes les valeurs en double, car le comparateur par défaut pour les listes ne compare pas les valeurs à l'intérieur des listes. Cela signifie que je ne peux pas utiliser
Distinct()
,GroupBy()
ouContains
pour filtrer la liste.la source
K (ngn / k) , 17 octets
Essayez-le en ligne!
{
}
fonction avec argumentx
=x
group - forme un dictionnaire dans lequel les clés sont des lignes et les valeurs sont des listes de leurs indices dans la matricex@
indexer la matrice d'origine avec cela. le résultat est à nouveau un dictionnaire avec les lignes comme clés. les valeurs sont plusieurs copies de la clé correspondante+//'
somme jusqu'à convergence chacun (n'agit que sur les valeurs; les clés restent telles quelles)a:
affecter àa
|/
maximum (des valeurs)a=|/a
un dictionnaire ligne-à-booléen dont les lignes contribuent le plus&
"où", c'est-à-dire quelles touches correspondent aux valeurs de 1la source
Japt,
1110 octetsExécutez-le en ligne
la source
05AB1E ,
109 octetsEssayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
Gaia , 10 octets
Essayez-le en ligne!
Étant donné que Gaia n'accepte pas les listes via des entrées très facilement, il s'agit d'une fonction qui accepte une liste du haut en haut de la pile et laisse le résultat en haut (sous forme de masques d'ordre trié).
la source
J , 16 octets
Essayez-le en ligne!
Un verbe monadique qui donne le résultat booléen dans l'ordre d'apparition.
Comment ça fonctionne
la source