sandbox
Ai fini dell'attività corrente, un cubo di lunghezza unitaria viene reso in proiezione obliqua con simboli ASCII come segue:
+-----+
/ /|
+-----+ |
| | +
| |/
+-----+
+
per i vertici.-
per i bordi X. La lunghezza dell'unità lungo X è rappresentata da cinque-
tra due vertici.|
per i bordi a Y. La lunghezza dell'unità lungo Y è rappresentata da due|
tra due vertici./
per i bordi Z. La lunghezza dell'unità lungo Z è rappresentata da una/
tra due vertici.- I vertici vengono disegnati solo dove tutti e tre i piani si intersecano.
- I bordi vengono disegnati solo nel punto in cui si intersecano esattamente due piani.
Quando una faccia unitaria viene estrusa, viene sfalsata di una lunghezza unitaria dalla sua posizione originale e vengono creati quattro nuovi bordi per ciascuna direzione (positiva e negativa).
Puoi pensare all'estrusione come al disegno degli assi di un sistema di coordinate cartesiane 3D in cui ogni asse è rappresentato come un cuboide con sezione trasversale 1x1 e lunghezza n
da (0,0,0)
Estruso di 1 lungo X:
+-----------------+
/ /|
+-----------------+ |
| | +
| |/
+-----------------+
Compito
Dati tre numeri per gli assi XYZ, estrudere simmetricamente le facce di un cubo unitario per gli importi indicati e renderizzare il risultato con i simboli ASCII come sopra specificato.
Ingresso
x, y, z - numeri non negativi - lunghezze di estrusione per i rispettivi assi. 0 significa nessuna estrusione. L'input può essere di tre numeri, un elenco di tre numeri, un triplo, una stringa o qualsiasi altra cosa conveniente per te.
Produzione
Il disegno ASCII del cubo dopo l'estrusione. Sono ammessi spazi guida e di coda.
Casi test
X Y Z
0 0 0
+-----+
/ /|
+-----+ |
| | +
| |/
+-----+
1 0 0
+-----------------+
/ /|
+-----------------+ |
| | +
| |/
+-----------------+
0 0 1
+-----+
/ /|
/ / |
/ / +
/ / /
/ / /
+-----+ /
| | /
| |/
+-----+
1 1 0
+-----+
/ /|
+-----+ |
+---| | +-----+
/ | |/ /|
+-----+ +-----+ |
| | +
| |/
+-----+ +-----+
| | +
| |/
+-----+
2 0 1
+-----+
/ /|
+-----------+ +-----------+
/ /|
+-----------+ +-----------+ |
| / /| | +
| +-----+ | |/
+---------| | +-----------+
| |/
+-----+
1 1 1
+-----+
/ /|-+
+-----+ |/|
+---| | +-----+
/ | |/ /|
+-----+-----+-----+ |
| / /| | +
| +-----+ | |/
+---| | +-----+
| |/| +
+-----+ |/
+-----+
Criteri vincenti
Vince la soluzione più breve in byte in ogni lingua. Aggiungi una breve descrizione del metodo utilizzato e del tuo codice.