песочница
Для целей текущей задачи куб единичной длины отображается в косой проекции с символами ASCII следующим образом:
+-----+
/ /|
+-----+ |
| | +
| |/
+-----+
+
для вершин.-
для X ребер. Длина единицы вдоль X представлена пятью-
между двумя вершинами.|
для Y ребер. Длина единицы вдоль Y представлена двумя|
между двумя вершинами./
для Z ребер. Длина единицы вдоль Z представлена одной/
между двумя вершинами.- Вершины отображаются только там, где пересекаются все три плоскости.
- Края рисуются только там, где пересекаются ровно две плоскости.
Когда грань единицы выдавливается, она смещается на единицу длины от ее исходного положения, и для каждого направления создаются четыре новых ребра (положительное и отрицательное).
Вы можете думать о выдавливании как о рисовании осей трехмерной декартовой системы координат, где каждая ось представлена в виде кубоида с поперечным сечением 1x1 и длиной n
от (0,0,0)
Выдавливается на 1 вдоль X:
+-----------------+
/ /|
+-----------------+ |
| | +
| |/
+-----------------+
задача
Учитывая три числа для осей XYZ, вытяните грани единичного куба симметрично указанным величинам и отразите результат с символами ASCII, как указано выше.
вход
x, y, z - неотрицательные числа - длины экструзии для соответствующих осей. 0 означает отсутствие экструзии. В качестве входных данных можно указать три числа, список из трех чисел, тройку, строку или все, что вам удобно.
Выход
Рисунок ASCII куба после экструзии. Ведущие и конечные пробелы разрешены.
Контрольные примеры
X Y Z
0 0 0
+-----+
/ /|
+-----+ |
| | +
| |/
+-----+
1 0 0
+-----------------+
/ /|
+-----------------+ |
| | +
| |/
+-----------------+
0 0 1
+-----+
/ /|
/ / |
/ / +
/ / /
/ / /
+-----+ /
| | /
| |/
+-----+
1 1 0
+-----+
/ /|
+-----+ |
+---| | +-----+
/ | |/ /|
+-----+ +-----+ |
| | +
| |/
+-----+ +-----+
| | +
| |/
+-----+
2 0 1
+-----+
/ /|
+-----------+ +-----------+
/ /|
+-----------+ +-----------+ |
| / /| | +
| +-----+ | |/
+---------| | +-----------+
| |/
+-----+
1 1 1
+-----+
/ /|-+
+-----+ |/|
+---| | +-----+
/ | |/ /|
+-----+-----+-----+ |
| / /| | +
| +-----+ | |/
+---| | +-----+
| |/| +
+-----+ |/
+-----+
Критерии победы
Самое короткое решение в байтах на каждом языке выигрывает. Пожалуйста, добавьте краткое описание используемого метода и ваш код.