Atribua os números de 0 a 7 aos 8 vértices de um cubo da maneira que desejar. Exatamente um número deve ser atribuído a cada vértice.
Por exemplo, seus vértices podem ser atribuídos assim:
3-----1
/| /|
4-----2 |
| | | |
| 5---|-0
|/ |/
6-----7
Escreva um programa que inclua um número inteiro de 0 a 5. Cada um desses 6 números está associado a exatamente uma face do seu cubo da maneira que desejar. Quando um desses números é inserido, os 4 números de vértices da face associada devem ser impressos em stdout em um quadrado de 2 × 2 dígitos. O rosto deve ser visto diretamente de fora do cubo. Todas as 4 rotações da face são válidas.
Por exemplo, se 0 estiver associado à face frontal do cubo de exemplo acima, isso seria uma saída válida para entrada 0
:
42
67
A face pode ser vista a qualquer rotação de 90 °, portanto, estas também são válidas:
27
46
76
24
64
72
Esta saída (e suas rotações) não são válidas , pois são visualizadas do lado errado da face:
24
76
A mesma idéia se aplica a todas as outras faces. por exemplo, se 1 estiver associado à face traseira, a entrada 1
poderá produzir saída 13[newline]05
(e 31[newline]50
seria inválida).
Portanto, o verdadeiro desafio é escolher seus números e rotações de vértices, de modo que a conversão da entrada em seus quatro números seja fácil e curta.
O código mais curto em bytes vence. O desempatador é um post anterior. ( Contador de bytes acessíveis ) .
Notas
- Você pode escrever uma função em vez de um programa. Ele deve levar um número inteiro de 0 a 5 e imprimir ou retornar a cadeia de grade de 2 × 2 dígitos.
- Obtenha entrada de stdin, linha de comando ou função arg. Você pode assumir que a entrada é válida.
- A saída pode opcionalmente ter uma nova linha à direita.
- Não deixe de nos dizer o número do vértice e do rosto que você escolheu.