Geben Sie bei einer Ganzzahlmatrix a
und einer nichtnegativen Ganzzahl i
eine Zuordnung aus b
, die die unterschiedlichen Werte in der i
th-Spalte a
den Zeilen zuordnet a
, die diesen Wert in der i
th-Spalte haben.
Sie können davon ausgehen, dass dies i
im halboffenen Bereich liegt [0, num_cols(a))
(oder [1, num_cols(a)]
wenn Sie 1-basierte Indizes verwenden) und dass alle Ganzzahlen innerhalb des für Ihre Sprache darstellbaren Bereichs liegen. Die Ein- und Ausgabe kann auf jede vernünftige Weise erfolgen, sofern sie die grundlegenden Anforderungen der Herausforderung erfüllt (2D-Array -> Zuordnung von Ints zu 2D-Arrays von Ints). Solange die Zuordnung klar und konsistent ist, müssen die Schlüssel nicht in die Ausgabe einbezogen werden.
Beispiele
[[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]]}
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Antworten:
Oktave , 24 Bytes
Probieren Sie es online!
Dadurch wird eine anonyme Funktion erstellt, die eine Matrix zurückgibt, deren Zeilen den Kriterien entsprechen. Oktave indiziert Arrays bei 1, nicht bei Null, und Zeilen einer Matrix werden durch ein getrennt
;
.Matrizen sind das, was Octave am besten kann - und zwar so gut, dass diese Herausforderung mit reiner Syntax und ohne eingebaute Funktionen gelöst werden kann.
Erläuterung
quelle
Ruby , 26 Bytes
Probieren Sie es online!
quelle
Wolfram Language (Mathematica) , 21 Byte
1-indiziert. Gibt eine
Association
Zuordnung zurück.Probieren Sie es online!
Dies ist ein seltener Fall, in dem eine längere Funktion (
Extract
) die Anzahl der Bytes verringert (die kürzere Funktion istPart
oder[[ ... ]]
), weilExtract
sie Curry erzeugen kann. Das Ergebnis ist diese äußerst übersichtliche Lösung mit zwei Funktionen.Erläuterung
Funktion, die das
<second input>
th-Element extrahiert .Gruppieren Sie die
<first input>
in Listen, die unterschiedlichen Schlüsseln zugeordnet sind<above function>[element]
.quelle
Haskell ,
6460 BytesProbieren Sie es online!
quelle
Sauber , 40 Bytes
Probieren Sie es online!
Ein Lambda (
:: Int [[Int]] Int -> [[Int]]
), bei dem eine teilweise Anwendung nur der ersten beiden Argumente eine Zuordnung zum dritten Argument ergibt.quelle
J , 16 Bytes
-3 Bytes dank FrownyFrog!
Probieren Sie es online!
Erläuterung:
Ein dyadisches Verb, das
i
als linkes unda
als rechtes Argument verwendet wird .]
ist das richtige argument,a
{"1
Findet die Zahlen ini
der Spalte in jeder Zeile</.
Kästchen Gruppen aus dem rechten Argument, ausgewählt durch die Tasten, bereitgestellt durch das linke~.@[
findet die eindeutigen Schlüssel;"0
verknüpft die Schlüssel mit den ausgewählten Gruppenquelle
;"0
statt,:
spart 3jq, 100 Bytes
Verwendet ein Objekt für die Ausgabe, verwendet ein Befehlszeilenargument
$f
und ein Array für die Standardeingabedeobfuscated:
quelle
R ,
7955 BytesProbieren Sie es online!
24 Bytes von @JayCe abgeschnitten
quelle
cat(z)
Vorabdruck hinzufügen , um auch den Schlüssel auszudrucken (ich bin nicht sicher, ob dies erforderlich ist).Python 3 , 45 Bytes
Probieren Sie es online!
Gibt die Zuordnung zurück, die als anonymes Lambda dargestellt wird.
quelle
Proton , 29 Bytes
Probieren Sie es online!
-3 Bytes dank Mr. Xcoder mit Currying und
filter
(TBH Ich bin ein bisschen überrascht, dassfilter
tatsächlich funktioniert hat)quelle
filter
sparen Sie drei Bytes.JavaScript (Node.js) , 29 Byte
Probieren Sie es online!
Aktualisiert jetzt, da ich die losen Ausgabeanforderungen erkenne. Dabei wird Curry als Golftechnik verwendet und es wird eine Funktion zurückgegeben, die eine Eingabe entgegennimmt
n
und diese den richtigen Arrays zuordnet.quelle
Gelee , 5 Bytes
Probieren Sie es online!
Lässt die Tasten aus, sollte aber klar sein.
Argument 1: i + 1
Argument 2: a
quelle
Java 10,
13564 BytesGibt eine
Function<Integer, List<int[]>>
akzeptierende Ganzzahleingabe zurückn
, die eine Liste von Arrays (Matrixzeilen) zurückgibt, bei denen diei
'ten Werte gleich den angegebenen sindn
.Probieren Sie es online aus.
Erläuterung:
quelle