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 8tecelagem, o byte é redefinido essencialmente.
Por exemplo, tecer o número 10011101(que está 157na base 10) produzirá 01110110(que está 118na base 10).
Entrada
Existem apenas 256entradas válidas, ou seja, todos os números inteiros entre 0e 255inclusive. 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