O espaço x de um conjunto de números inteiros é o conjunto de todos os números inteiros que podem ser obtidos combinando os números inteiros iniciais com o operador xor bit a bit usual ( ^
). Por exemplo, o xorspace de (8, 4)
é (0, 4, 8, 12)
: 0 é 4 ^ 4, 12 é 4 ^ 8 e nenhum outro número pode ser alcançado. Observe que os números iniciais são sempre incluídos, por esta definição (por exemplo, 4 é 4 ^ 4 ^ 4).
Seu objetivo é escrever o programa mais curto que recebe uma lista de números inteiros não negativos como entrada e gera o número de elementos em seu espaço x.
- As brechas padrão são proibidas.
- A entrada e a saída podem estar em qualquer um dos formatos usuais . A entrada é garantida como válida, não vazia e sem duplicatas.
- Seu código deve poder processar todos os casos de teste em menos de um dia .
Casos de teste
Input: 0
Output: 1
Input: 6
Output: 2
Input: 8 4
Ouput: 4
Input: 0 256
Output: 2
Input: 256 259 3
Output: 4
Input: 60 62 94 101 115
Output: 32
Input: 60 62 94 101 115 40 91
Output: 32
Input: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
Output: 64
Input: 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384
Output: 32768
l{mxFdy
.y
aplicado ao caso de teste de 1 a 63 é muito lento. Não tenho 2 ^ 63 de memória.MATL , 11 bytes
Experimente online!
O último caso de teste não é executado no interpretador online devido a limitações de memória, mas é executado offline em menos de 2 segundos em um computador moderno.
Explicação
Para entrada de tamanho
n
, faça o seguinte:n
Tempos de repetição :Código comentado.
Exemplo
Os resultados intermediários (etapas 2.1 e 2.3) para entrada
[256 259 3]
são:Primeira iteração:
[256 259 3]
com[256 259 3]
: computar todos os pares de bit a bit-XOR fornece à matrizAnexando
[256 259 3]
e desduplicandoSegunda iteração: resultado atual
[0 3 259 256]
com[256 259 3]
. Depois de deduplicar isso novamente,Terceira iteração: novamente
Portanto, a saída é
4
(número de entradas do resultado).fonte
M
. Portanto, o tamanho do vetor de resultados intermediários nunca excedeM
e a complexidade é O (M*M
). O OP disse que a definição exata den
não importa, portanto, se eu definirn
comoM
posso afirmar que é O (n*n
).Haskell , 64 bytes
f
pega uma lista de números inteiros e retorna um número inteiro.Experimente online!
Isso não lida com uma lista vazia, pois você pode, mas em
$0:
vez do espaço apósmaximum
.Como funciona
m
da lista for zero, retornará 1.fonte
Mathematica, 52 bytes
fonte
05AB1E , 8 bytes
Experimente online!
Todos os casos de teste terminam em menos de 1 minuto no TIO.
fonte
2^n
parte: /âü^Ùg
até que vi que você pode xor mais de uma vez, boa solução.Python 2 , 55 bytes
Experimente online!
Bate para fora funções:
O belo método de eliminação de linhas de Ørjan Johansen é um byte mais curto.
Python 2 , 54 bytes
Experimente online!
fonte
Geléia ,
98 bytesConclui todos os casos de teste em menos de 8 segundos no TIO, com requisitos de memória insignificantes.
Experimente online!
Como funciona
fonte
Python, 113 bytes
fonte
u+=[c][c in s:]
é equivalente à suaif
declaração.