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 duas outras representações da permutação. Como um ciclo:
(02467531)
E como uma lista de pares do mapeamento:
[[0,2], [1,0], [2,4], [3,1], [4,6], [5,3], [6,7], [7,5]]
Sua tarefa é visualizar esta permutação, usando os personagens de desenho de caixa ─
, │
, ┌
, ┐
, └
, ┘
, ┼
(Unicode pontos de código: U + 2500, U + 2502, U + 250C, U + 2510, U + 2514, U + 2518, U + 253C). Essa visualização deve satisfazer as seguintes restrições:
A primeira e a última linha são exatamente:
0 1 2 3 4 5 6 7
Entre eles, você pode usar quantas linhas desejar, com até 15 caracteres cada, para ajustar os caracteres de desenho da caixa (você precisará de pelo menos 4 linhas). As linhas devem começar verticalmente abaixo de um dos dígitos na primeira linha e terminar verticalmente acima do dígito correspondente na última linha. As oito linhas devem estar conectadas e só podem atravessar via ┼
(que é sempre uma travessia, nunca duas linhas de viragem que estão tocando). Os caminhos exatos das linhas são com você (e encontrar um layout particularmente jogável é o cerne deste desafio). Uma saída válida seria:
0 1 2 3 4 5 6 7
│ │ └─┼┐│ │ └┐│
└─┼─┐ ││└─┼─┐││
┌─┘ │ ││ │ │││
│ ┌─┼─┘│ │ │││
│ │ │ ┌┼──┘ │││
│ │ │ │└┐ ┌─┼┼┘
│ │ │ │ │ │ │└┐
0 1 2 3 4 5 6 7
No entanto, qualquer outro layout que conecte corretamente os dígitos corretos também é bom. Por favor, mostre a sua saída escolhida na sua resposta.
Você pode escrever um programa ou função e não aceita nenhuma entrada. Envie o diagrama para STDOUT (ou alternativa mais próxima) ou como um valor de retorno da função na forma de uma string ou uma lista de strings (cada uma representando uma linha).
Aplicam-se as regras de código-golfe padrão , para que o código mais curto (em bytes) vença.
01234567
como uma entrada e, em seguida, conectar que para 01234567
? Para que você mesmo descubra os links? Seria uma tarefa significativamente mais desafiadora, especialmente para o golfe.