O desafio
Você é dado:
- uma lista h vazia e não classificada de números inteiros positivos (o palheiro)
- um número inteiro positivo n (a agulha)
Sua tarefa é retornar a lista de todas as concatenações decimais exclusivas de permutações de h cuja representação binária contém a representação binária de n .
Exemplos
h = [1, 2, 3]
n = 65Há apenas uma concatenação correspondente, portanto a saída esperada é
[321]
.h = [1, 2, 3]
n = 7Desta vez, existem três concatenações que contêm o padrão binário 111 . A saída esperada é
[123, 231, 312]
.h = [12, 3]
n = 7Apenas duas permutações estão disponíveis e ambas são correspondentes. A saída esperada é
[123, 312]
.h = [1, 2, 2]
n = 15A única concatenação correspondente é 122 ( 1111010 em binário, que contém 1111 ), portanto a saída esperada é
[122]
. Observe que duas permutações realmente levam a 122, mas você não tem permissão para produzir[122, 122]
.
Esclarecimentos e regras
- Você pode usar a agulha como um número inteiro (
65
), uma string representando um valor decimal ("65"
) ou uma string representando um valor binário ("1000001"
). - Você pode usar o palheiro como uma matriz nativa / objeto / conjunto de números inteiros (
[11,12,13]
), uma matriz nativa / objeto / conjunto de seqüências representando valores decimais (["11","12","13"]
) ou uma sequência delimitada de valores decimais ("11 12 13"
ou"11,12,13"
). Você também pode optar por uma variante usando matrizes de dígitos (como[[1,1],[1,2],[1,3]]
). - A saída deve seguir um dos formatos descritos acima para o palheiro, mas não necessariamente o mesmo.
- Você não deve lidar com palheiros cuja concatenação decimal mais alta é maior que o número inteiro não assinado mais representável no seu idioma.
- Além disso, seu código deve teoricamente oferecer suporte a qualquer entrada - desde que seja concedido tempo e memória suficientes.
- Isso é
SPARTA!code-golf , então a resposta mais curta em bytes ganha!
Casos de teste
Haystack | Needle | Output
---------------------+----------+-----------------------------------
[ 1, 2, 3 ] | 65 | [ 321 ]
[ 1, 2, 3 ] | 7 | [ 123, 231, 312 ]
[ 12, 3 ] | 7 | [ 123, 312 ]
[ 1, 2, 2 ] | 15 | [ 122 ]
[ 1, 2 ] | 7 | []
[ 12, 34, 56 ] | 21 | [ 125634, 341256, 345612, 563412 ]
[ 1, 2, 3, 4, 5 ] | 511 | [ 53241 ]
[ 1, 3, 5, 7, 9 ] | 593 | [ 37519, 51793, 75913, 75931 ]
[ 11, 12, 13, 14 ] | 12141311 | [ 12141311 ]
[ 1, 2, 1, 2, 1, 2 ] | 1015 | [ 221112 ]
["12","3"]
e ["1","23"]
são dois palheiros distintas.
set([(1, 2, 2)])
. É válido ou devo me livrarset
?