Você deve usar duas listas de números inteiros positivos como entrada, vamos chamá-los de n e m .
Você pode assumir que:
- Todos os números inteiros em n fazem parte de m
- Todos os números inteiros em m são únicos
- As listas não estão vazias
Desafio: retorne os índices de onde você encontra os valores em n , em m .
Isso pode ser confuso, mas acho que os casos de teste tornarão a tarefa bem clara. Os exemplos são indexados em 1, você pode escolher indexado em 0 se desejar (especifique).
n = 5 3 4 1
m = 6 8 4 1 2 5 3 100
output: 6 7 3 4 // 5 is in the 6th position of m
// 3 is in the 7th position of m
// 4 is in the 3rd position of m
// 1 is in the 4th position of m
n = 5 3 4 9 7 5 7
m = 3 4 5 7 9
output: 3 1 2 5 4 3 4
n = 1 2 3 4 5 6
m = 1 2 3 4 5 6
output: 1 2 3 4 5 6
n = 16 27 18 12 6 26 11 24 26 20 2 8 7 12 5 22 22 2 17 4
m = 15 18 11 16 14 20 37 38 6 36 8 32 21 2 31 22 33 4 1 35 3 25 9 30 26 39 5 23 29 10 13 12 7 19 24 17 34 27 40 28
output: 4 38 2 32 9 25 3 35 25 6 14 11 33 32 27 16 16 14 36 18
n = 54
m = 54
output: 1
Os vencedores serão as soluções mais curtas em cada idioma.
Respostas:
V , 26 bytes
Experimente online!
Esta é uma solução muito estranha e hacky, porque V tem pouco ou nenhum conceito de números. A entrada vem neste formato:
Com um espaço à direita em cada linha.
Hexdump:
Explicação:
Se isso não esclarecer, aqui estão alguns exemplos do buffer durante os vários estágios pelos quais o loop passa:
Etapa 1 (
|
é o cursor)Etapa 2:
Etapa 3:
Etapa 4:
Etapa 5:
Etapa 6:
Etapa 7:
De volta ao estágio 1:
fonte
Python 2 , 25 bytes
Experimente online!
Observe que isso usa indexação 0.
fonte
APL (Dyalog) , 1 byte
Experimente online!
Nota: a
⍳
função não aceita escalares como argumento à esquerda; portanto, para fornecer um argumento à esquerda como54
, você deve transformá-lo em uma matriz usando,
assim(,54)
.fonte
Mathematica, 25 bytes
Toma duas entradas
m
en
, e retorna os índices baseados em 1 den
inm
.fonte
Retina ,
323130 bytes1 byte economizado graças a Kritixi Lithos e 1 byte graças a Martin Ender
Usa indexação 0. A entrada possui um espaço à direita em cada linha.
Experimente online!
Explicação
Aqui, substituímos todos os números na primeira linha pelo número de números antes do mesmo número na segunda linha.
Em seguida, excluímos a segunda linha, deixando apenas a nova primeira linha como saída.
fonte
Java ,
10481 bytes1 byte graças ao Business cat.
Experimente online!
fonte
C #, 32 bytes
Este é o código como uma expressão lambda, portanto deve ser válido.
A solução está com um índice baseado em 0. Eu acho que é bem direto como ele funciona - ele simplesmente pega os itens de n e seleciona os índices dos itens em m.
fonte
Oitava, 25 bytes
Experimente online!
fonte
Haskell , 32 bytes
Experimente online! Um indexado.
Outras tentativas:
fonte
k, 1
Este é um operador interno
k
e usa indexação baseada em zero.Exemplo:
fonte
05AB1E , 5 bytes
Experimente online!
fonte
Gelatina , 3 bytes
Experimente online!
Especificações
fonte
JavaScript (ES6), 28 bytes
Pega as matrizes em currying sintaxe
(n)(m)
. Indexado a 0.fonte
Perl 6 , 31 bytes
Tente
Expandido:
0 indexado
fonte
Japonês , 4 bytes
Teste online!
Explicação
Não há muito o que explicar aqui, mas mostra uma característica interessante do Japt. Normalmente, você passaria uma função para
m
:Isso é basicamente
U.map(X => V.indexOf(X))
(o queU
está implícito). No entanto, quando você está apenas executando uma operação entre dois valores (b
aqui, onV
eX
), você pode apenas dar ao operador e o outro valor e o Japt fará uma função com isso. Isso significa que vocêmX{X+2}
pode jogar golfe param+2
.No entanto, isso não funciona quando os valores estão na ordem errada (
mbV
seria abreviação demX{XbV}
). Para contornar isso, você pode acrescentar um ponto de exclamação ao operador, que informa ao Japt para trocar os operandos. Isso custa um byte extra, mas ainda é um par de bytes mais curto que o alternativo. E agora você sabe um pouco mais sobre o Japt.fonte
MATL , 2 bytes
Isso usa 1 indexação. Experimente online!
Explicação
A meta-função
&
indica que a próxima função usará uma especificação secundária de entrada / saída padrão (específica da função). Para functionm
(ismember
),&
especifica que sua segunda saída será produzida. Contém o índice de (a primeira ocorrência de) cada entrada da primeira entrada na segunda entrada.fonte
Haskell, 34 bytes
Exemplo de uso:
[5,3,4,9,7,5,7] # [3,4,5,7,9]
->[3,1,2,5,4,3,4]
O built-in
elemIndex
éData.List
e, portanto, mais longo que a versão acima. O loop externo passan
e o loop interno passa por pares de(i,e)
ondei
é o índice dee
inm
. Mantenha oi
ondee
é igual ao elemento atual den
.fonte
R,
205 bytesIndexado 1;
match
é a função embutida que encontra os índices na segunda entrada dos elementos da primeira, ou seja,match(n,m)
fornece a resposta desejadaobrigado a @flodel por apontar que retornar uma função é perfeitamente aceitável como resposta!
Experimente online!
fonte
match
(5 bytes) por si só seria uma solução aceitável.Pitão , 4 bytes
Experimente online!
Observe que isso usa indexação 0.
fonte
J , 2 bytes
Este não é um programa completo, mas uma função interna.
Use-o como tal:
Experimente online!
Observe que isso usa indexação 0.
fonte
CJam , 4 bytes
Bloco anônimo que espera argumentos na pilha e deixa o resultado na pilha.
Usa indexação 0.
Experimente online!
fonte
Haskell, 43 bytes
fonte
Clojure, 25 bytes
Indexado a 0.
fonte
Perl 5,
3834 bytes4 bytes salvos graças ao Dada
1 indexado. Toma as listas m e n como uma única lista, como
f(@m,@n)
. Ox0
é apenas para impedir que a saída comece1,2,3,4,5
, etc.fonte
sub{...}
você pode economizar 2 bytes. Além disso, você pode usar emx0
vez de&&()
salvar mais dois bytes.PHP, 56 bytes
Versões Online
0 Indexação
saída como String
PHP, 65 bytes
Saída como matriz
PHP, 78 bytes
solução alternativa com
array_map
para matrizes não exclusivas, substitua por
array_flip($_GET[1])[$v]
array_search($v,$_GET[1])
fonte
Bash + coreutils, 51
Experimente online .
Resposta anterior:
Experimente online .
fonte
Java 7, 80 bytes
Indexado a 0
Explicação:
Código do teste:
Experimente aqui.
Saída:
fonte