(não encontraremos Find
nem capturamos um tryCatch
)
Esta é a parte dois de uma série de várias partes da implementação de algumas funções R interessantes. A primeira parte pode ser encontrada aqui .
A tarefa:
Você deve implementar a match
função de R no menor número possível de bytes.
Entrada:
x
, uma lista / matriz possivelmente vazia de números inteirostable
, uma lista / matriz possivelmente vazia de números inteirosnomatch
, um único valor inteiroincomparables
, uma lista / matriz possivelmente vazia de números inteiros
Saída:
- uma única matriz / lista de números inteiros
O
de comprimento igual ax
, em que cada valorO[i]
representa:- O índice
j
do primeiro valor emtable
quetable[j]==x[i]
nomatch
, indicando que nenhum valor emtable
é igual ax[i]
OR quex[i]
está na lista deincomparables
.
- O índice
Casos de teste
All in the form x, table, nomatch, incomparables -> output
outputs
[], [1,2,3], 0, [5] -> []
[1, 2, 3], [], 0, [5] -> [0, 0, 0]
[9, 4, 3, 6, 3], [9, 8, 7, 6, 5, 4, 3, 2, 1], -1, [4] -> [1, -1, 7, 4, 7]
[8, 6, 7, 5, 3, 0, 9], [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9, 3, 2, 3, 8, 4, 6, 2, 6], 1000, [1] -> [12, 8, 14, 5, 1, 1000, 6]
Mais casos de teste podem ser gerados conforme necessário.
Regras adicionais:
- R possui índices baseados em 1, mas índices consistentes baseados em alternativas são aceitáveis. Portanto, você pode usar índices que começam em 3 ou 17 ou qualquer outra coisa, mas isso deve ser consistente e deve ser indicado na sua resposta.
- Se você escolheu um idioma que tenha isso embutido, implemente também sua própria solução.
- As explicações são apreciadas.
Isso é código-golfe , então a solução mais curta em bytes vence!
4
está dentro incomparables
, portanto não pode ser correspondido. Se o seu idioma não suportar números negativos, não há problema em exigir números não negativos, mas indique essa suposição no seu envio.
make
.