Скоро у моего друга день рождения, и так как он программист и любитель ASCII, я решил сделать ему торт ASCII!
К сожалению, я продолжаю забывать о его нынешнем возрасте, поэтому я хотел бы иметь программу для моей духовки ASCII, которая выпекает торт с указанным количеством свечей, поэтому мне не придется делать это самому, если я ошибаюсь с его возраст.
Печи ASCII имеют только ограниченную память и емкость, поэтому они должны использовать как можно меньше байтов .
Твое задание:
Напишите программу, которая выводит торт на день рождения на консоль с таким количеством свечей, которое указывает вход.
Требования к тортам:
- Он должен иметь границу, состоящую из горизонтальных
-
и вертикальных|
линий и вершин+
. - По крайней мере 5 символов в ширину (включая границу торта
|
) - По крайней мере 5 символов высотой (включая границу торта
-
) - Должен быть символ пробела
между границей торта и первой основой свечи (не пламенем) на каждой стороне, кроме случаев, когда в этом месте есть пламя. Пламя или основание свечи не должны перекрывать границы торта.
- Максимальная ширина торта составляет 9 символов, поэтому в строке может быть не более 5 свечей.
- Поскольку мы не хотим, чтобы наш торт был двухмерным, он должен иметь дополнительные 2 ряда в высоту, чтобы придать ему объем. Добавьте еще одну границу внизу и соедините вершины с вершинами над ними, снова используя символы ASCII сверху (
-
,|
и+
).
Требования к свечам:
- Состоит из основания
|
и пламени*
, с пламенем, сложенным сверху основания. - Свечи не могут быть непосредственно примыкающими друг к другу, кроме как по диагонали.
- Свечи располагаются слева направо, затем сверху вниз, максимум 5 в одной строке.
(Примечание: если в предыдущем ряду было 5 свечей, то в следующем ряду не может быть 5, а с тех пор они будут смежными.)
Дополнительные замечания:
- Ширина торта зависит от количества свечей в первом ряду, но она должна быть не менее 5 символов и не более 9 символов в ширину.
- Свечи заполняются, начиная с самого верхнего ряда, слева направо. Одна строка, если она заполнена, должна начинаться со строки под первой.
Входные данные:
Вы можете принять число в (разумном) формате, который вам нравится.
Для этого испытания вы можете предположить, что число находится в диапазоне от 0 до 2 31 (не включая 0), хотя я не признаю кого-то, кто такой старый.
Выход:
Вы можете либо вернуть строку, либо напрямую записать полученный торт в консоль вывода.
Правила:
- Стандартные лазейки запрещены.
- Это код-гольф , поэтому выигрывает самый короткий код в байтах на любом языке.
Примеры:
Входные данные: 8
+-----------+
| * * * * * |
| |*|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
Входные данные: 2
+-----+
| * * |
| | | |
| |
+-----+
| |
+-----+
Входные данные: 12
+-----------+
| * * * * * |
| |*|*|*|*| |
| *|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
Удачи!