Descripción de la tarea
Dado un número entero, intercambie sus bits menos significativos (2k – 1) -th y 2k -th para todos los enteros k> 0 . Esta es la secuencia A057300 en el OEIS.
(Se supone que el número tiene "ceros infinitos infinitos". En la práctica, esto simplemente significa anteponer un solo 0 bit a números de longitud impar).
Este es el código de golf , por lo que gana el código más corto (en bytes).
Casos de prueba
0 -> 0
1 -> 2
9 -> 6
85 -> 170
220 -> 236
1827 -> 2835
47525 -> 30298
unsigned char array_of_bytes[1024]
trabajar de la manera que espera (es decir, ser un campo de bits con 1024 * CHAR_BIT
entradas). Sin CHAR_BIT
embargo, me imagino que la mayoría de las respuestas que admiten entradas de longitud arbitraria suponen que es pareja, ya que el desplazamiento de bits entre bytes es engorroso. Por lo tanto, podría poner un requisito para admitir k
hasta un tamaño constante, como 256 o algo que sea razonable para AES, y los idiomas sin tipos enteros de 256 bits tendrían que usar bucles. Eso podría hacer que valga la pena considerar los vectores SIMD para una respuesta asm x86: P