Piaskownica
Na potrzeby bieżącego zadania sześcian o długości jednostki jest renderowany w skośnym rzucie za pomocą symboli ASCII w następujący sposób:
+-----+
/ /|
+-----+ |
| | +
| |/
+-----+
+
dla wierzchołków.-
dla krawędzi X. Długość jednostki wzdłuż X jest reprezentowana przez pięć-
między dwoma wierzchołkami.|
dla krawędzi Y. Długość jednostki wzdłuż Y jest reprezentowana przez dwa|
między dwoma wierzchołkami./
dla krawędzi Z. Długość jednostki wzdłuż Z jest reprezentowana przez jeden/
między dwoma wierzchołkami.- Wierzchołki są rysowane tylko tam, gdzie przecinają się wszystkie trzy płaszczyzny.
- Krawędzie są rysowane tylko tam, gdzie przecinają się dokładnie dwie płaszczyzny.
Kiedy powierzchnia jednostki jest wyciągana, jest ona przesunięta o długość jednostki od jej pierwotnej pozycji i dla każdego kierunku tworzone są cztery nowe krawędzie (dodatnia i ujemna).
Można myśleć o wytłoczeniu jako o rysowaniu osi trójwymiarowego kartezjańskiego układu współrzędnych, w którym każda oś jest reprezentowana jako prostopadłościan o przekroju 1x1 i długości n
od (0,0,0)
Wytłaczany przez 1 wzdłuż X:
+-----------------+
/ /|
+-----------------+ |
| | +
| |/
+-----------------+
Zadanie
Biorąc pod uwagę trzy liczby dla osi XYZ, wyciągnij ściany sześcianu jednostkowego symetrycznie o wskazane ilości i renderuj wynik za pomocą symboli ASCII, jak określono powyżej.
Wkład
x, y, z - liczby nieujemne - długości wytłaczania dla odpowiednich osi. 0 oznacza brak wytłaczania. Dane wejściowe mogą składać się z trzech cyfr, listy trzech liczb, potrójnej, ciągu znaków lub dowolnej innej dogodnej dla Ciebie pozycji.
Wydajność
Rysunek kostki ASCII po wytłoczeniu. Dozwolone są wiodące i końcowe przestrzenie.
Przypadki testowe
X Y Z
0 0 0
+-----+
/ /|
+-----+ |
| | +
| |/
+-----+
1 0 0
+-----------------+
/ /|
+-----------------+ |
| | +
| |/
+-----------------+
0 0 1
+-----+
/ /|
/ / |
/ / +
/ / /
/ / /
+-----+ /
| | /
| |/
+-----+
1 1 0
+-----+
/ /|
+-----+ |
+---| | +-----+
/ | |/ /|
+-----+ +-----+ |
| | +
| |/
+-----+ +-----+
| | +
| |/
+-----+
2 0 1
+-----+
/ /|
+-----------+ +-----------+
/ /|
+-----------+ +-----------+ |
| / /| | +
| +-----+ | |/
+---------| | +-----------+
| |/
+-----+
1 1 1
+-----+
/ /|-+
+-----+ |/|
+---| | +-----+
/ | |/ /|
+-----+-----+-----+ |
| / /| | +
| +-----+ | |/
+---| | +-----+
| |/| +
+-----+ |/
+-----+
Kryteria wygranej
Najkrótsze rozwiązanie w bajtach w każdym języku wygrywa. Dodaj krótki opis zastosowanej metody i kod.