Étant donné une matrice entière a
et un entier non négatif i
, sortez un mappage b
qui mappe les valeurs distinctes de la i
e colonne de a
sur les lignes de a
qui ont cette valeur dans la i
e colonne.
Vous pouvez supposer qu'il se i
trouve dans la plage semi-ouverte [0, num_cols(a))
(ou [1, num_cols(a)]
si vous choisissez d'utiliser des indices basés sur 1) et que tous les entiers se trouvent dans la plage représentable de votre langue. L'entrée et la sortie peuvent être effectuées de toute manière raisonnable, tant qu'elles satisfont aux exigences de base du défi (tableau 2D -> mappage des entiers aux tableaux 2D des pouces). Tant que le mappage est clair et cohérent, les clés n'ont pas besoin d'être incluses dans la sortie.
Exemples
[[1]], 0 -> {1: [[1]]}
[[3, 4, 5], [1, 4, 2], [5, 5, 5], [7, 7, 7], [1, 5, 9]], 1 -> {4: [[3, 4, 5], [1, 4, 2]], 5: [[5, 5, 5], [1, 5, 9]], 7: [[7, 7, 7]]}
[[1, 2, 3, 4, 5], [5, 4, 3, 2, 1], [2, 3, 4, 5, 6], [8, 9, 100, 0, 2]], 4 -> {5: [[1, 2, 3, 4, 5]], 1: [[5, 4, 3, 2, 1]], 6: [[2, 3, 4, 5, 6]], 2: [[8, 9, 100, 0, 2]]}
Il s'agit de code-golf , donc la réponse la plus courte en octets l'emporte.
Réponses:
Octave , 24 octets
Essayez-le en ligne!
Cela crée une fonction anonyme qui renvoie une matrice dont les lignes correspondent aux critères. Les tableaux d'index d'octave sont à 1, et non à zéro, et les lignes d'une matrice sont séparées par a
;
.Les matrices sont ce qu'Octave fait le mieux - si bien, en fait, que ce défi peut être résolu en utilisant une syntaxe pure, sans fonctions intégrées.
Explication
la source
Rubis , 26 octets
Essayez-le en ligne!
la source
Wolfram Language (Mathematica) , 21 octets
1 indexé. Renvoie un
Association
mappage.Essayez-le en ligne!
Il s'agit d'un cas rare dans lequel une fonction plus longue (
Extract
) réduit le nombre d'octets (la plus courte étantPart
ou[[ ... ]]
) carExtract
peut curry. Le résultat est cette solution à deux fonctions extrêmement concise.Explication
Fonction qui extrait le
<second input>
e élément.Regroupez les
<first input>
dans des listes associées à des clés distinctes<above function>[element]
.la source
Haskell ,
6460 octetsEssayez-le en ligne!
la source
Nettoyer , 40 octets
Essayez-le en ligne!
Un lambda (
:: Int [[Int]] Int -> [[Int]]
) où une application partielle des deux premiers arguments seulement donne un mappage sur le troisième argument.la source
J , 16 octets
-3 octets grâce à FrownyFrog!
Essayez-le en ligne!
Explication:
Un verbe dyadique, prenant
i
comme argument de gauche eta
comme argument de droite.]
est le bon argument,a
{"1
trouve les nombres dansi
la colonne e de chaque ligne</.
encadre les groupes de l'argument de droite, sélectionnés par les touches, fournis par celui de gauche~.@[
trouve les clés uniques;"0
relie les clés aux groupes sélectionnésla source
;"0
au lieu d',:
enregistrer 3jq, 100 octets
utilise un objet pour la sortie, prend un argument de ligne de commande
$f
plus un tableau sur l'entrée standarddésobfusqué:
la source
R ,
7955 octetsEssayez-le en ligne!
24 octets rasés par @JayCe
la source
cat(z)
avant impression pour imprimer également la clé (je ne sais pas si cela est nécessaire).Python 3 , 45 octets
Essayez-le en ligne!
Renvoie le mappage représenté comme un lambda anonyme.
la source
Proton , 29 octets
Essayez-le en ligne!
-3 octets grâce à M. Xcoder utilisant le curry et
filter
(TBH je suis un peu surpris que cela aitfilter
réellement fonctionné)la source
filter
vous font économiser trois octets.JavaScript (Node.js) , 29 octets
Essayez-le en ligne!
Mis à jour maintenant que je me rends compte des exigences de sortie lâches. Cela utilise le curry comme technique de golf et renvoie également une fonction qui prend une entrée
n
et la mappe vers les tableaux appropriés.la source
Gelée , 5 octets
Essayez-le en ligne!
Omet les clés, mais devrait être clair.
Argument 1: i + 1
Argument 2: a
la source
Java 10,
13564 octetsRenvoie une
Function<Integer, List<int[]>>
acceptation d'une entrée entièren
, qui renvoie une liste de tableaux (matrices-lignes) où lesi
'e valeurs sont égales à la donnéen
.Essayez-le en ligne.
Explication:
la source