Eingang
Nehmen Sie eine Liste von Werten x i, die jeweils mit einem Schlüssel y i gepaart sind .
[(x1, y1), (x2, y2), ...]
Ausgabe
Gibt eine Liste L zurück, die nur Werte aus der Menge { x i } enthält.
- Die Länge von L muss gleich der Anzahl der eindeutigen Schlüssel k in der Menge { y i } sein.
- Für jeden eindeutigen Schlüssel k muss ein Wert aus { x i } mit dem Schlüssel k vorhanden sein .
Einzelheiten
- Standardlücken nicht zulässig.
- Sie können davon ausgehen, dass alle Werte in der Eingabe nicht negative Ganzzahlen sind.
- Möglicherweise sind doppelte Werte und Schlüssel vorhanden.
- Sie können davon ausgehen, dass die Eingabe mindestens ein Wert / Schlüssel-Paar enthält.
- Wenn Sie lieber zwei Listen gleicher Länge als Eingabe verwenden möchten (eine für Werte, eine für Schlüssel), ist dies in Ordnung.
- Sie dürfen keine anderen Eingaben vornehmen.
- Die Reihenfolge der von Ihnen ausgegebenen Liste spielt keine Rolle.
- Das x i, das Sie für jeden Schlüssel auswählen, spielt keine Rolle.
Zum Beispiel mit Eingang [[0, 0], [1, 3], [2, 3]]
können Sie zurückkommen entweder [0, 1]
oder [0, 2]
oder eine beliebige Permutation davon.
Beispiele
[[1, 2], [3, 2], [3, 0]] -> [1, 3] or [3, 3]
[[7, 2], [7, 0], [7, 1]] -> [7, 7, 7]
[[4, 0], [4, 0], [9, 1], [5, 2]] -> [4, 9, 5]
[[9, 1], [99, 10], [5, 5], [0, 3]] -> [9, 99, 5, 0]
Wenig Bytes gewinnen.
code-golf
array-manipulation
Dylnan
quelle
quelle
key value key value key value ...
?key
s enthalten? Können wir zwei Arrays alskeys
undvalues
als Eingabe nehmen? Oder erstellen Sie eine eigene benutzerdefinierte Map, die mehrere Werte als Eingabe verwendet (oder eine Liste von Schlüssel-Wert-Paaren)?If you prefer to take two lists of equal length as input that is fine.
Ist das was du meinst? Ich weiß nicht, was du mit "Karten" meinst.Antworten:
Python 2 , 34 Bytes
Probieren Sie es online aus!
Nimmt die Eingabe als Werteliste und Schlüsselliste entgegen.
Generieren Sie ein Wörterbuch, tauschen Sie Schlüssel und Werte aus, sodass nur eindeutige y-Werte übrig bleiben. Gibt alle entsprechenden x-Werte zurück
quelle
Gelee , 2 Bytes
Probieren Sie es online aus!
Nimmt zwei Listen gleicher Länge, erstens sind Schlüssel, zweitens sind Werte.
quelle
J , 4 Bytes
Wie?
Das linke Argument
x
ist eine Liste von Schlüsseln, das rechtey
eine Liste von Werten/.
Gruppeny
nachx
{.
nimmt das erste Element jeder GruppeProbieren Sie es online aus!
quelle
Clojure,
2018 BytesDies verwendet Listen von Werten und Schlüsseln als Argumente in dieser Reihenfolge.
quelle
Python 3 , 42 Bytes
Probieren Sie es online aus!
a = Werte
b = Schlüssel
quelle
Haskell ,
4947 BytesProbieren Sie es online aus! Eingabe als Liste von Tupeln, z
[(1, 2), (3, 2), (3, 0)]
.Eingabe als Liste von Listen (49 Bytes)
Probieren Sie es online aus!
quelle
JavaScript (ES8), 43 Byte
Nimmt die Eingabe als 2 verschiedene Listen in der Curry-Syntax auf
(values)(keys)
.Probieren Sie es online aus!
quelle
{ [Function: o] '0': 1, '2': 1 }
.Schale , 4 Bytes
Probieren Sie es online aus!
Wie?
quelle
Stax , 5 Bytes
Führen Sie es aus und debuggen Sie es
Nimmt zwei Arrays, zuerst Werte, dann Schlüssel.
Erläuterung:
quelle
R , 30 Bytes
Probieren Sie es online aus!
quelle
Japt , 8 Bytes
Japt Interpreter
Vielen Dank an Shaggy für das Speichern von 1 letzten Byte
Die Logik wurde komplett überarbeitet. Nimmt einige Hinweise aus Luis 'Antwort, aber ich denke, es ist immer noch verbessert. Nimmt nun die Eingabe als zwei Listen ,
keys, values
. Anscheinend bin ich immer noch nicht optimal.Erläuterung:
quelle
¥
wird nicht benötigt;)b
war, bemerkte überhaupt nicht, dass nur einer von ihnen eine Funktion übernahm.Vâ £gVbX
.Ruby , 27 Bytes
Probieren Sie es online aus!
Nimmt die Eingabe als zwei Arrays auf (die Fußzeile wandelt die ursprünglichen Testfälle in dieses Format um).
quelle
05AB1E , 4 Bytes
Nehmen Sie zwei Eingabelisten: zuerst die Werte, dann die Tasten.
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
Java 8, 82 Bytes
Ein Lambda aus einem Strom von
int[]
Paaren zujava.util.Collection<Integer>
.Probieren Sie es online aus
quelle
Julia 0,6 ,
363432 BytesProbieren Sie es online aus!
(zwei Bytes dank @JonathanFrech rasiert)
(weitere zwei Bytes durch Ersetzen
∈
durch=
im Verständnis)Das in der Frage angegebene Eingabeformat
[[1, 2], [2, 7]]
funktioniert wie in Julia als Array von Arrays mit (potenziellen) Schlüsselwertpaaren. Das einzige, worauf Sie achten müssen, ist, dass der Schlüssel an zweiter Stelle und der Wert an erster Stelle steht.Leichte Änderung bei gleicher Anzahl von Bytes,
Probieren Sie es online aus!
quelle
Julia 0,6 ,
292619 BytesProbieren Sie es online aus!
Punktfreier Stil. Nimmt die Eingabe als Array von Schlüsseln und als Array von Werten auf.
Ältere Lösung:
2926 BytesProbieren Sie es online aus!
-3 Bytes mit Operatorsyntax anstelle von Lambda
Nimmt die Eingabe als Array von Werten und als Array von Schlüsseln auf.
quelle
MATL , 9 Bytes
Probieren Sie es online aus!
Wahrscheinlich suboptimal, aber hey, es funktioniert!
Verwendet die Fakten, dass (a) Eingaben garantiert nur nicht negative Ganzzahlen enthalten. (B) MATL erweitert ein Array, das Sie versuchen, einem nicht vorhandenen Index zuzuweisen.
v
- Erstellen Sie ein leeres Array im Stapeli
- Array von Werten erhalteniQ
- Array von Schlüsseln abrufen, um 1 erhöhen (der Mindestwert ist also 1, nicht 0, da die MATL-Indizierung auf 1 basiert)(
- Zuweisungsindizierung - Verwenden Sie das Array von Schlüsseln als Indizes und weisen Sie diesen Indizes die Werte zu (wenn Schlüssel wiederholt werden, verbleibt nur der letzte Wert an dieser Stelle).5M
- Ruft die letzte Eingabe des letzten Aufrufs ab. Dies ist das Array der von uns verwendeten Indizesu)
- Nehmen Sie eine eindeutige Liste dieser Indizes, indizieren Sie mit dieser Liste und belassen Sie das Ergebnis (eine Liste mit Werten eindeutiger Schlüssel) im Stapelquelle
Japt ,
2420168 Bytes-4 Bytes dank @Shaggy
Nimmt Eingabe als
key, values
Probieren Sie es online aus!
Japt ,
2018 BytesProbieren Sie es online aus!
quelle
1
Umkehren der Eingaben,2
Überprüfen Sie die Unicode-Verknüpfungen.m@A?B:C} k¥B
möchten Sie vielleicht versuchenk@A} m@C
:-)Pyth , 7 Bytes
Alle Testfälle .
quelle
Perl 5
-pa
, 24 BytesProbieren Sie es online aus!
Nimmt Eingaben im Format vor
key value key value key value ...
. Die TIO-Fußzeile dient nur zur Trennung von Testfällen.quelle
Perl 6 , 25 Bytes
Versuch es
Erweitert:
quelle
C-Sharp, 63 Bytes
Gibt eine Aufzählung von Ganzzahlen zurück.
quelle
Wolfram Language (Mathematica) , 25 Bytes
Probieren Sie es online aus!
quelle
Rost , 81 Bytes
Probieren Sie es online aus!
Nimmt zwei Iteratoren und gibt einen Iterator zurück.
quelle
Perl 6 , 12 Bytes
Probieren Sie es online aus!
Erzwingt die angegebene Liste zu einem Hash und gibt dann die Werte zurück. Dies funktioniert sowohl für eine Liste von Paaren als auch für eine Liste von
key, value, key, value...
.quelle