Entrada
Tome una lista de valores x i cada uno emparejado con una clave y i .
[(x1, y1), (x2, y2), ...]
Salida
Devuelve una lista L que contiene solo valores del conjunto { x i }.
- La longitud de L debe ser igual al número de claves únicas k en el conjunto { y i }.
- Para cada clave única k debe haber un valor de { x i } que tenga la clave k .
Detalles
- Lagunas estándar no permitidas.
- Puede suponer que todos los valores en la entrada serán enteros no negativos.
- Puede haber valores y claves duplicados.
- Puede suponer que hay al menos un par valor / clave en la entrada.
- Si prefiere tomar dos listas de igual longitud como entrada (una para valores, otra para claves), está bien.
- No puede tomar ninguna otra entrada.
- El orden de la lista que genera no importa.
- La x i que elija para cada tecla no importa.
Por ejemplo, la entrada [[0, 0], [1, 3], [2, 3]]
se puede devolver cualquiera [0, 1]
o [0, 2]
o cualquier permutación de estos.
Ejemplos
[[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]
Pocos bytes ganan.
code-golf
array-manipulation
dylnan
fuente
fuente
key value key value key value ...
?key
s? ¿Podemos tomar dos matrices comokeys
yvalues
como entrada? ¿O crear nuestro propio mapa personalizado que toma múltiples valores como entrada (o tal vez una lista de pares clave-valor)?If you prefer to take two lists of equal length as input that is fine.
¿Es esto lo que quieres decir? No sé a qué te refieres con "Mapas".Respuestas:
Python 2 , 34 bytes
Pruébalo en línea!
Toma entrada como lista de valores y lista de claves.
Genere diccionario, intercambiando claves y valores, que deja solo valores y únicos. Devuelve todos los valores de x correspondientes
fuente
Jalea , 2 bytes
Pruébalo en línea!
Toma dos listas de igual longitud, primero son las claves, segundo son los valores.
fuente
J , 4 bytes
¿Cómo?
El argumento de la izquierda
x
es una lista de claves, la correctay
, una lista de valores/.
grupos dey
acuerdox
{.
toma el primer elemento de cada grupoPruébalo en línea!
fuente
Clojure,
2018 bytesEsto toma listas de valores y claves como argumentos, en ese orden.
fuente
Python 3 , 42 bytes
Pruébalo en línea!
a = valores
b = teclas
fuente
Haskell ,
4947 bytesPruébalo en línea! Entrada como una lista de tuplas, por ejemplo
[(1, 2), (3, 2), (3, 0)]
.Entrada como lista de listas (49 bytes)
Pruébalo en línea!
fuente
JavaScript (ES8), 43 bytes
Toma la entrada como 2 listas distintas en la sintaxis de curry
(values)(keys)
.Pruébalo en línea!
fuente
{ [Function: o] '0': 1, '2': 1 }
.Casco , 4 bytes
Pruébalo en línea!
¿Cómo?
fuente
Stax , 5 bytes
Ejecutar y depurarlo
Toma dos matrices, primero valores, luego claves.
Explicación:
fuente
R , 30 bytes
Pruébalo en línea!
fuente
Japt , 8 bytes
Intérprete Japt
Gracias a Shaggy por guardar 1 último byte
Completamente reelaborado la lógica. Toma algunas pistas de la respuesta de Luis, pero creo que todavía ha mejorado. Ahora toma la entrada como dos listas,
keys, values
. Aparentemente todavía estoy por debajo de lo óptimo.Explicación:
fuente
¥
es necesario;)b
, no noté en absoluto que solo uno de ellos tomaba una función.Vâ £gVbX
.Rubí , 27 bytes
Pruébalo en línea!
Toma datos como dos matrices (el pie de página transforma los casos de prueba originales en este formato).
fuente
05AB1E , 4 bytes
Tome dos listas de entrada: primero los valores, luego las claves.
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
Java 8, 82 bytes
Una lambda de una corriente de
int[]
pares ajava.util.Collection<Integer>
.Pruébalo en línea
fuente
Julia 0.6 ,
363432 bytesPruébalo en línea!
(recortado dos bytes gracias a @JonathanFrech)
(otros dos bytes reemplazando
∈
con=
comprensión)El formato de entrada especificado en la pregunta
[[1, 2], [2, 7]]
funciona como lo es en Julia como una matriz de matrices que contienen pares de valores de clave (potenciales), lo único que hay que tener en cuenta es que la clave ocupa el segundo lugar y el valor primero.Ligero cambio, para el mismo bytecount,
Pruébalo en línea!
fuente
Julia 0.6 ,
292619 bytesPruébalo en línea!
Estilo sin puntos. Toma datos como una matriz de claves y una matriz de valores.
Solución anterior:
2926 bytesPruébalo en línea!
-3 bytes usando la sintaxis del operador en lugar de lambda
Toma datos como una matriz de valores y una matriz de claves.
fuente
MATL , 9 bytes
Pruébalo en línea!
Probablemente subóptimo, pero bueno, ¡funciona!
Utiliza los hechos de que (a) se garantiza que la entrada solo tiene enteros no negativos, (b) MATL extiende una matriz de intentos de asignar a un índice que no existe.
v
- crear una matriz vacía en la pilai
- obtener una matriz de valoresiQ
- obtenga una matriz de claves, incremente en 1 (por lo que el valor mínimo es 1, no 0, ya que la indexación MATL se basa en 1)(
- indexación de asignación: use la matriz de claves como índices y asigne los valores a esos índices (si alguna tecla se repite, solo el último valor permanece en esa ubicación)5M
- obtiene la última entrada de la última llamada - que sería la matriz de índices que utilizamosu)
- tome una lista única de esos índices, indexe con esa lista y deje ese resultado (que es una lista de valores de claves únicas) en la pilafuente
Japt ,
2420168 bytes-4 bytes gracias a @Shaggy
Toma entrada como
key, values
Pruébalo en línea!
Japt ,
2018 bytesPruébalo en línea!
fuente
1
jugando golf: invierta las entradas,2
verifique los accesos directos de Unicode.m@A?B:C} k¥B
, es posible que desee probark@A} m@C
:-)Pyth , 7 bytes
Todos los casos de prueba .
fuente
Perl 5
-pa
, 24 bytesPruébalo en línea!
Toma entrada en el formato
key value key value key value ...
. El pie de página de TIO es solo para separar los casos de prueba.fuente
Perl 6 , 25 bytes
Intentalo
Expandido:
fuente
C-Sharp, 63 bytes
Devuelve un enumerable de enteros.
fuente
Wolfram Language (Mathematica) , 25 bytes
Pruébalo en línea!
fuente
Óxido , 81 bytes
Pruébalo en línea!
Toma dos iteradores, devuelve un iterador.
fuente
Perl 6 , 12 bytes
Pruébalo en línea!
Convierte la lista dada en un hash y luego devuelve los valores. Esto funciona tanto en una lista de pares como en una lista de
key, value, key, value...
.fuente