Entrada
Faça uma lista dos valores x i cada um emparelhado com uma tecla y i .
[(x1, y1), (x2, y2), ...]
Resultado
Retorne uma lista L contendo apenas valores do conjunto { x i }.
- O comprimento de L deve ser igual ao número de chaves exclusivas k no conjunto { y i }.
- Para cada chave exclusiva k , deve haver um valor de { x i } que tenha a chave k .
Detalhes
- Lacunas padrão não permitidas.
- Você pode assumir que todos os valores na entrada serão números inteiros não negativos.
- Pode haver valores e chaves duplicados.
- Você pode assumir que há pelo menos um par de valor / chave na entrada.
- Se você preferir usar duas listas de tamanho igual como entrada (uma para valores e outra para chaves), tudo bem.
- Você não pode receber nenhuma outra entrada.
- A ordem da lista que você produz não importa.
- O x i que você escolher para cada chave não importa.
Por exemplo, com a entrada [[0, 0], [1, 3], [2, 3]]
você pode retornar tanto [0, 1]
ou [0, 2]
ou qualquer permutação destes.
Exemplos
[[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]
Menos bytes ganha.
code-golf
array-manipulation
dylnan
fonte
fonte
key value key value key value ...
?key
s? Podemos pegar duas matrizes comokeys
evalues
como entrada? Ou crie nosso próprio mapa personalizado que aceita vários valores como entrada (ou talvez uma lista de pares de valores-chave)?If you prefer to take two lists of equal length as input that is fine.
É isso que você quer dizer? Não sei o que você quer dizer com "Maps".Respostas:
Python 2 , 34 bytes
Experimente online!
Recebe a entrada como lista de valores e lista de chaves.
Gere dicionário, trocando chaves e valores, o que deixa apenas valores y únicos. Retornar todos os valores x correspondentes
fonte
Geléia , 2 bytes
Experimente online!
Leva duas listas de igual comprimento, primeiro é as chaves, segundo é os valores.
fonte
J , 4 bytes
Quão?
O argumento da esquerda
x
é uma lista de chaves, a corretay
- uma lista de valores/.
grupos dey
acordox
{.
pega o primeiro elemento de cada grupoExperimente online!
fonte
Clojure,
2018 bytesIsso leva listas de valores e chaves como argumentos, nessa ordem.
fonte
Python 3 , 42 bytes
Experimente online!
a = valores
b = chaves
fonte
Haskell ,
4947 bytesExperimente online! Insira como uma lista de tuplas, por exemplo
[(1, 2), (3, 2), (3, 0)]
.Entrada como lista de listas (49 bytes)
Experimente online!
fonte
JavaScript (ES8), 43 bytes
Recebe entrada como 2 listas distintas na sintaxe de currying
(values)(keys)
.Experimente online!
fonte
{ [Function: o] '0': 1, '2': 1 }
.Casca , 4 bytes
Experimente online!
Quão?
fonte
Stax , 5 bytes
Execute e depure
Leva duas matrizes, primeiro valores e depois chaves.
Explicação:
fonte
R , 30 bytes
Experimente online!
fonte
Japonês , 8 bytes
Intérprete Japt
Obrigado a Shaggy por salvar 1 último byte
Completamente reformulada a lógica. Toma algumas pistas da resposta de Luis, mas acho que ainda está melhorada. Agora recebe a entrada como duas listas
keys, values
,. Aparentemente, ainda estou aquém do ideal.Explicação:
fonte
¥
não é necessário;) #b
, e nem percebi que apenas uma delas fazia uma função.Vâ £gVbX
.Ruby , 27 bytes
Experimente online!
Recebe a entrada como duas matrizes (o rodapé transforma os casos de teste originais nesse formato).
fonte
05AB1E , 4 bytes
Tome duas listas de entrada: primeiro os valores e depois as teclas.
Experimente online ou verifique todos os casos de teste .
Explicação:
fonte
Java 8, 82 bytes
Um lambda de um fluxo de
int[]
pares parajava.util.Collection<Integer>
.Experimente Online
fonte
Julia 0.6 ,
363432 bytesExperimente online!
(eliminou dois bytes graças a @JonathanFrech)
(outros dois bytes substituindo
∈
por=
em compreensão)O formato de entrada especificado na pergunta
[[1, 2], [2, 7]]
funciona como em Julia como uma matriz de matrizes contendo pares de valores-chave (potenciais), a única coisa a se cuidar é que a chave fique em segundo e o valor em primeiro lugar.Pequenas alterações, pelo mesmo número anterior,
Experimente online!
fonte
Julia 0.6 ,
292619 bytesExperimente online!
Estilo sem pontos. Recebe a entrada como uma matriz de chaves e uma matriz de valores.
Solução mais antiga:
2926 bytesExperimente online!
-3 bytes usando a sintaxe do operador em vez de lambda
Recebe a entrada como uma matriz de valores e uma matriz de chaves.
fonte
MATL , 9 bytes
Experimente online!
Provavelmente abaixo do ideal, mas ei, funciona!
Usa os fatos de que (a) a entrada é garantida como tendo números inteiros não negativos, (b) o MATL estende uma matriz que você tenta atribuir a um índice que não existe.
v
- crie uma matriz vazia na pilhai
- obter matriz de valoresiQ
- obtém uma matriz de chaves, incrementa em 1 (então o valor mínimo é 1, não 0, pois a indexação MATL é baseada em 1)(
- indexação de atribuição - use a matriz de chaves como índices e atribua os valores a esses índices (se alguma tecla for repetida, apenas o último valor permanecerá nesse local)5M
- obtém a última entrada da última chamada - que seria a matriz de índices que usamosu)
- pegue uma lista exclusiva desses índices, indexe com essa lista e deixe esse resultado (que é uma lista de valores de chaves exclusivas) na pilhafonte
Japt ,
2420168 bytes-4 bytes graças a @Shaggy
Aceita entrada como
key, values
Experimente online!
Japonês ,
2018 bytesExperimente online!
fonte
1
Inverta as entradas,2
verifique os atalhos Unicode.m@A?B:C} k¥B
, você pode querer tentark@A} m@C
:-)Pitão , 7 bytes
Todos os casos de teste .
fonte
Perl 5
-pa
, 24 bytesExperimente online!
Recebe entrada no formato
key value key value key value ...
. O rodapé do TIO serve apenas para separar os casos de teste.fonte
Perl 6 , 25 bytes
Tente
Expandido:
fonte
C-Sharp, 63 bytes
Retorna um enumerável de números inteiros.
fonte
Wolfram Language (Mathematica) , 25 bytes
Experimente online!
fonte
Ferrugem , 81 bytes
Experimente online!
Toma dois iteradores, retorna um iterador.
fonte
Perl 6 , 12 bytes
Experimente online!
Coercifica a lista fornecida em um Hash e, em seguida, retorna os valores. Isso funciona tanto em uma lista de pares quanto em uma lista de
key, value, key, value...
.fonte