Nota: a primeira metade deste desafio vem do desafio anterior de Martin Ender, Visualize Bit Weaving .
A linguagem de programação esotérica evil possui uma operação interessante sobre valores de bytes que chama de "tecelagem".
É essencialmente uma permutação dos oito bits do byte (não importa de que extremidade começamos a contar, pois o padrão é simétrico):
- O bit 0 é movido para o bit 2
- O bit 1 é movido para o bit 0
- O bit 2 é movido para o bit 4
- O bit 3 é movido para o bit 1
- O bit 4 é movido para o bit 6
- O bit 5 é movido para o bit 3
- O bit 6 é movido para o bit 7
- O bit 7 é movido para o bit 5
Por conveniência, aqui estão outras três representações da permutação. Como um ciclo:
(02467531)
Como um mapeamento:
57361402 -> 76543210 -> 64725031
E como uma lista de pares do mapeamento:
[[0,2], [1,0], [2,4], [3,1], [4,6], [5,3], [6,7], [7,5]]
Após a 8
tecelagem, o byte é redefinido essencialmente.
Por exemplo, tecer o número 10011101
(que está 157
na base 10) produzirá 01110110
(que está 118
na base 10).
Entrada
Existem apenas 256
entradas válidas, ou seja, todos os números inteiros entre 0
e 255
inclusive. Isso pode ser considerado em qualquer base, mas deve ser consistente e você deve especificar se a base escolhida não for a base dez.
Você não pode zerar suas entradas.
Resultado
Você deve produzir o resultado da tecelagem de bits, em qualquer base, que também deve ser consistente e especificada, se não a base dez.
Você pode zerar suas saídas.
Relacionados: Visualize Bit Weaving