Учитывая три целых числа> = 2, создайте куб ASCII в ортогональной (кабинетной) проекции. Три целых числа представляют высоту, ширину и глубину (измеряются видимыми символами), включая углы. Углы должны быть «о» или «+», свободный выбор.
ш: 10, ч: 5, д: 4 Таким образом, получается:
o--------o
/ /|
/ / |
o--------o |
| | o
| | /
| |/
o--------o
Теперь, чтобы сделать это немного сложнее, все лица могут быть либо сплошными, прозрачными или отсутствующими. Мы заказываем лица так:
o--------o
/ /|
/ 2 / |
o--------o 3|
| | o
| 1 | /
| |/
o--------o
---
|2|
-------
|5|1|3|
-------
|4|
---
|6|
---
И предоставьте список токенов, S, T или M. Оригинальный пример таков:
w 10
h 5
d 4
S S S S S S
o--------o
/ /|
/ / |
o--------o |
| | o
| | /
| |/
o--------o
Если одно лицо прозрачно, мы можем видеть все, что за ним:
T S S S S S
o--------o
/ /|
/ / |
o--------o |
| o-----| o
| / | /
|/ |/
o--------o
T T T T T T
o--------o
/| /|
/ | / |
o--------o |
| o-----|--o
| / | /
|/ |/
o--------o
Для пар отсутствующих граней смежные края или углы больше не видны:
M M S S S S
o--------o
/| /|
/ | / |
o | o |
| o-----| o
| / | /
|/ |/
o--------o
M M S S M S
o--------o
| /|
| / |
| o |
o-----| o
/ | /
/ |/
o--------o
Код гольф, самый короткий код выигрывает! Конечные пробелы и переводы строк в порядке, вы можете выбрать метод ввода и порядок ввода.
you're free to choose input method and input order
. И поскольку ничто не говорит иначе, любой из методов ввода / вывода по умолчанию может использоваться.Ответы:
Древесный уголь ,
190181 байтПопробуйте онлайн! Ссылка на подробную версию кода. Изменить: Сохранение 9 байтов путем оптимизации моих условий. У древесного угля нет
else
токена, поэтому уif
команд всегда есть две альтернативы, если они не находятся в конце блока или программы. Чтобы избежать этого, я используюfor (<bool>)
вместоif (<bool>)
которого имеет аналогичный эффект, когда выражение может иметь только значения 0 или 1, но сохраняет байт. (Для того , чтобы достичь этого я должен был изменить выражения , чтобы они всегда были верны , когда тело необходимо для выполнения.) Я также был в состоянии оптимизироватьif (<bool>) for (<int>)
вfor (And(bool, int))
.источник
X * Y * Z
куб ASCII.JavaScript (ES6),
318314308 байтПринимает ширину, высоту и глубину как целые числа, а грани как массив символов.
Как?
Функция M () обрабатывает заданный обратный вызов F в заданном диапазоне [0 ... n] .
Переменная a содержит плоский массив, представляющий сетку размером (w + d) x (h + d-1) . Первоначально он заполнен рядами пробелов, оканчивающихся символами новой строки.
Функция D () используется для «рисования» грани кубоида.
Два младших бита параметра t содержат тип лица:
Биты с № 2 по № 4 содержат индекс лица на основе 0.
Лица нарисованы в следующем порядке:
демонстрация
Показать фрагмент кода
источник
SOGL V0.11 ,
200194193192190 байтовВводит заказ в порядке
Связали!
Попробуй здесь! (сжатое значение изменено для совместимости с V0.12)
источник