Description de la tâche
Étant donné un entier, permutez ses (2k – 1) -e et 2k -e bits de poids faible pour tous les entiers k> 0 . Il s'agit de la séquence A057300 dans l'OEIS.
(Le nombre est supposé avoir «une infinité de zéros non significatifs». En pratique, cela signifie simplement ajouter un seul bit de 0 à des nombres de longueur impaire.)
Il s'agit de code-golf , donc le code le plus court (en octets) l'emporte.
Cas de test
0 -> 0
1 -> 2
9 -> 6
85 -> 170
220 -> 236
1827 -> 2835
47525 -> 30298
unsigned char array_of_bytes[1024]
de fonctionner comme vous le souhaitez (c'est-à-dire être un champ de bits avec 1024 * CHAR_BIT
entrées). J'imagine que la plupart des réponses prenant en charge des entrées de longueur arbitraire supposeraient CHAR_BIT
même, car le décalage des bits entre les octets est lourd. Vous pouvez donc absolument imposer une prise k
en charge jusqu'à une taille constante, comme 256 ou quelque chose de raisonnable pour AES, et les langues sans types entiers 256 bits devraient utiliser des boucles. Cela pourrait rendre les vecteurs SIMD à considérer pour une réponse asm x86: P