Przypisz cyfry od 0 do 7 do 8 wierzchołków sześcianu w dowolny sposób. Dokładnie jeden numer musi być przypisany do każdego wierzchołka.
Na przykład twoje wierzchołki mogą być przypisane w następujący sposób:
3-----1
/| /|
4-----2 |
| | | |
| 5---|-0
|/ |/
6-----7
Napisz program, który przyjmuje liczbę całkowitą od 0 do 5. Każda z tych 6 liczb jest powiązana z dokładnie jedną ścianą sześcianu w dowolny sposób. Po wprowadzeniu jednej z tych liczb, 4 numery wierzchołków powiązanej powierzchni muszą być wydrukowane w formacie stdout w kwadracie cyfr 2 × 2. Twarzą należy patrzeć prosto z zewnątrz sześcianu. Wszystkie 4 obroty twarzy są prawidłowe.
Na przykład, jeśli 0 jest skojarzone z przednią powierzchnią przykładowego sześcianu powyżej, to byłby to prawidłowy wynik dla danych wejściowych 0
:
42
67
Twarz można oglądać przy dowolnym obrocie o 90 °, więc są one również ważne:
27
46
76
24
64
72
Ten wynik (i jego obroty) są niepoprawne , ponieważ są oglądane z niewłaściwej strony twarzy:
24
76
Ten sam pomysł dotyczy wszystkich innych twarzy. np. jeśli 1 jest powiązany z tylną ścianą, wówczas dane wejściowe 1
mogą generować dane wyjściowe 13[newline]05
(i 31[newline]50
byłyby nieprawidłowe).
Tak więc prawdziwym wyzwaniem jest wybranie liczb i rotacji wierzchołków, tak aby przekształcenie danych wejściowych na 4 liczby wierzchołków było łatwe i krótkie.
Najkrótszy kod w bajtach wygrywa. Tiebreaker jest wcześniejszym postem. ( Poręczny licznik bajtów. )
Notatki
- Możesz napisać funkcję zamiast programu. Powinien przyjąć liczbę całkowitą od 0 do 5 i wydrukować lub zwrócić 2 × 2-cyfrowy ciąg siatki.
- Weź dane wejściowe ze stdin, wiersza poleceń lub funkcji arg. Możesz założyć, że dane wejściowe są prawidłowe.
- Wyjście może opcjonalnie mieć końcowy znak nowej linii.
- Podaj nam wybrane przez siebie numery wierzchołków i twarzy.