Caixa de areia
Para os propósitos da tarefa atual, um cubo de comprimento unitário é renderizado em projeção oblíqua com símbolos ASCII da seguinte maneira:
+-----+
/ /|
+-----+ |
| | +
| |/
+-----+
+
para os vértices.-
para as arestas X. O comprimento da unidade ao longo de X é representado por cinco-
entre dois vértices.|
para as bordas em Y. O comprimento da unidade ao longo de Y é representado por dois|
entre dois vértices./
para as arestas Z. O comprimento da unidade ao longo de Z é representado por um/
entre dois vértices.- Os vértices são desenhados apenas onde todos os três planos se cruzam.
- As arestas são desenhadas apenas onde exatamente dois planos se cruzam.
Quando uma face de unidade é extrudada, ela é deslocada pelo comprimento da unidade de sua posição original e quatro novas arestas são criadas para cada direção (positiva e negativa).
Você pode pensar na extrusão como desenhar os eixos de um sistema de coordenadas cartesianas 3D em que cada eixo é representado como um cuboide com seção transversal 1x1 e comprimento n
distante de (0,0,0)
Extrudado por 1 ao longo de X:
+-----------------+
/ /|
+-----------------+ |
| | +
| |/
+-----------------+
Tarefa
Dados três números para os eixos XYZ, faça a extrusão simétrica das faces de um cubo de unidade pelas quantidades indicadas e renderize o resultado com os símbolos ASCII, conforme especificado acima.
Entrada
x, y, z - números não negativos - comprimentos de extrusão para os respectivos eixos. 0 significa que não há extrusão. A entrada pode ser três números, uma lista de três números, um triplo, uma string ou qualquer coisa que seja conveniente para você.
Saída
O desenho ASCII do cubo após a extrusão. Os espaços de espera à esquerda e à direita são permitidos.
Casos de teste
X Y Z
0 0 0
+-----+
/ /|
+-----+ |
| | +
| |/
+-----+
1 0 0
+-----------------+
/ /|
+-----------------+ |
| | +
| |/
+-----------------+
0 0 1
+-----+
/ /|
/ / |
/ / +
/ / /
/ / /
+-----+ /
| | /
| |/
+-----+
1 1 0
+-----+
/ /|
+-----+ |
+---| | +-----+
/ | |/ /|
+-----+ +-----+ |
| | +
| |/
+-----+ +-----+
| | +
| |/
+-----+
2 0 1
+-----+
/ /|
+-----------+ +-----------+
/ /|
+-----------+ +-----------+ |
| / /| | +
| +-----+ | |/
+---------| | +-----------+
| |/
+-----+
1 1 1
+-----+
/ /|-+
+-----+ |/|
+---| | +-----+
/ | |/ /|
+-----+-----+-----+ |
| / /| | +
| +-----+ | |/
+---| | +-----+
| |/| +
+-----+ |/
+-----+
Critérios de vitória
A solução mais curta em bytes em todos os idiomas vence. Por favor, adicione uma breve descrição do método usado e seu código.