El xorspace de un conjunto de enteros es el conjunto de todos los enteros que se pueden obtener combinando los enteros iniciales con el operador xor bit a bit habitual ( ^
). Por ejemplo, el xorspace de (8, 4)
es (0, 4, 8, 12)
: 0 es 4 ^ 4, 12 es 4 ^ 8, y no se puede alcanzar ningún otro número. Tenga en cuenta que los números iniciales siempre se incluyen, por esta definición (por ejemplo, 4 es 4 ^ 4 ^ 4).
Su objetivo es escribir el programa más corto que tome una lista de enteros no negativos como entrada y genere la cantidad de elementos en su espacio x.
- Las lagunas estándar están prohibidas.
- La entrada y la salida pueden estar en cualquiera de los formatos habituales . Se garantiza que la entrada sea válida, no vacía y sin duplicados.
- Su código debería poder procesar todos los casos de prueba en menos de un día .
Casos de prueba
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 al caso de prueba 1 a 63 es demasiado lento. No tengo 2 ^ 63 de memoria.MATL , 11 bytes
Pruébalo en línea!
El último caso de prueba no se ejecuta en el intérprete en línea debido a limitaciones de memoria, sino que se ejecuta sin conexión en menos de 2 segundos en una computadora moderna.
Explicación
Para la entrada de tamaño
n
, esto hace lo siguiente:n
tiempos:Código comentado
Ejemplo
Los resultados intermedios (pasos 2.1 y 2.3) para la entrada
[256 259 3]
son:Primera iteración:
[256 259 3]
con[256 259 3]
: calcular todos los pares de bitwise-XOR da la matrizAdjuntar
[256 259 3]
y deduplicarSegunda iteración: resultado actual
[0 3 259 256]
con[256 259 3]
. Después de deduplicar esto nuevamente daTercera iteración: nuevamente
Entonces la salida es
4
(número de entradas de resultado).fuente
M
. Por lo tanto, el tamaño del vector de resultados intermedios nunca excedeM
, y la complejidad es O (M*M
). El OP ha dicho que la definición exacta den
no importa, por lo que si definon
comoM
puedo afirmar que esto es O (n*n
).Haskell , 64 bytes
f
toma una lista de enteros y devuelve un entero.Pruébalo en línea!
Esto no maneja una lista vacía, para eso puede
$0:
hacerlo, sino en lugar del espacio posteriormaximum
.Cómo funciona
m
de la lista es cero, devuelve 1.fuente
Mathematica, 52 bytes
fuente
05AB1E , 8 bytes
Pruébalo en línea!
Todos los casos de prueba terminan en menos de 1 minuto con TIO.
fuente
2^n
parte: /âü^Ùg
hasta que te vi puede xor más de una vez, buena solución.Python 2 , 55 bytes
Pruébalo en línea!
Funciones superadas:
El hermoso método de eliminación de filas de Ørjan Johansen es un byte más corto.
Python 2 , 54 bytes
Pruébalo en línea!
fuente
Jalea ,
98 bytesTermina todos los casos de prueba en menos de 8 segundos en TIO, con requisitos de memoria insignificantes.
Pruébalo en línea!
Cómo funciona
fuente
Python, 113 bytes
fuente
u+=[c][c in s:]
es equivalente a suif
declaración.