Asigne los números del 0 al 7 a los 8 vértices de un cubo de la forma que desee. Se debe asignar exactamente un número a cada vértice.
Por ejemplo, sus vértices podrían asignarse así:
3-----1
/| /|
4-----2 |
| | | |
| 5---|-0
|/ |/
6-----7
Escriba un programa que tome un número entero de 0 a 5. Cada uno de estos 6 números está asociado con exactamente una cara de su cubo de la manera que desee. Cuando se ingresa uno de estos números, los 4 números de vértice de la cara asociada deben imprimirse en stdout en un cuadrado de 2x2 dígitos. La cara se debe ver directamente desde afuera del cubo. Las 4 rotaciones de la cara son válidas.
Por ejemplo, si 0 está asociado con la cara frontal del cubo de ejemplo anterior, entonces esta sería una salida válida para la entrada 0
:
42
67
La cara se puede ver en cualquier rotación de 90 °, por lo que también son válidos:
27
46
76
24
64
72
Esta salida (y sus rotaciones) no son válidas , ya que se ven desde el lado equivocado de la cara:
24
76
La misma idea se aplica a todas las otras caras. por ejemplo, si 1 está asociado con la cara posterior, entonces la entrada 1
puede producir salida 13[newline]05
(y 31[newline]50
sería inválida).
Entonces, el verdadero desafío es elegir sus números de vértice y rotaciones de tal manera que traducir la entrada a sus 4 números de vértice sea fácil y corto.
El código más corto en bytes gana. Tiebreaker es una publicación anterior. ( Práctico contador de bytes ) .
Notas
- Puede escribir una función en lugar de un programa. Debe tomar un número entero de 0 a 5 e imprimir o devolver la cadena de cuadrícula de 2 × 2 dígitos.
- Tome la entrada de stdin, línea de comando o función arg. Puede suponer que la entrada es válida.
- La salida puede tener opcionalmente una nueva línea final.
- Asegúrese de decirnos los números de vértice y cara que eligió.