Скоро у моего друга день рождения, и так как он программист и любитель ASCII, я решил сделать ему торт ASCII!
К сожалению, я продолжаю забывать о его нынешнем возрасте, поэтому я хотел бы иметь программу для моей духовки ASCII, которая выпекает торт с указанным количеством свечей, поэтому мне не придется делать это самому, если я ошибаюсь с его возраст.
Печи ASCII имеют только ограниченную память и емкость, поэтому они должны использовать как можно меньше байтов .
Твое задание:
Напишите программу, которая выводит торт на день рождения на консоль с таким количеством свечей, которое указывает вход.
Требования к тортам:
- Он должен иметь границу, состоящую из горизонтальных
-
и вертикальных|
линий и вершин+
. - По крайней мере 5 символов в ширину (включая границу торта
|
) - По крайней мере 5 символов высотой (включая границу торта
-
) - Должен быть символ пробела
между границей торта и первой основой свечи (не пламенем) на каждой стороне, кроме случаев, когда в этом месте есть пламя. Пламя или основание свечи не должны перекрывать границы торта.
- Максимальная ширина торта составляет 9 символов, поэтому в строке может быть не более 5 свечей.
- Поскольку мы не хотим, чтобы наш торт был двухмерным, он должен иметь дополнительные 2 ряда в высоту, чтобы придать ему объем. Добавьте еще одну границу внизу и соедините вершины с вершинами над ними, снова используя символы ASCII сверху (
-
,|
и+
).
Требования к свечам:
- Состоит из основания
|
и пламени*
, с пламенем, сложенным сверху основания. - Свечи не могут быть непосредственно примыкающими друг к другу, кроме как по диагонали.
- Свечи располагаются слева направо, затем сверху вниз, максимум 5 в одной строке.
(Примечание: если в предыдущем ряду было 5 свечей, то в следующем ряду не может быть 5, а с тех пор они будут смежными.)
Дополнительные замечания:
- Ширина торта зависит от количества свечей в первом ряду, но она должна быть не менее 5 символов и не более 9 символов в ширину.
- Свечи заполняются, начиная с самого верхнего ряда, слева направо. Одна строка, если она заполнена, должна начинаться со строки под первой.
Входные данные:
Вы можете принять число в (разумном) формате, который вам нравится.
Для этого испытания вы можете предположить, что число находится в диапазоне от 0 до 2 31 (не включая 0), хотя я не признаю кого-то, кто такой старый.
Выход:
Вы можете либо вернуть строку, либо напрямую записать полученный торт в консоль вывода.
Правила:
- Стандартные лазейки запрещены.
- Это код-гольф , поэтому выигрывает самый короткий код в байтах на любом языке.
Примеры:
Входные данные: 8
+-----------+
| * * * * * |
| |*|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
Входные данные: 2
+-----+
| * * |
| | | |
| |
+-----+
| |
+-----+
Входные данные: 12
+-----------+
| * * * * * |
| |*|*|*|*| |
| *|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
Удачи!
Ответы:
Древесный уголь ,
767170 6646 байтПопробуйте онлайн! Ссылка на подробную версию кода. Редактировать: 1 байт сохранен благодаря @ASCII_Only. Сэкономили 20 байтов, открыв аккуратный способ рисования свечей. Объяснение:
Рассчитайте размер всего торта, включая дополнительный объем, и только верх торта, чтобы их можно было нарисовать. ((
=
= ASCII 61) = (+
= ASCII 43) + 9 * 2 для дополнительного тома.)Переместите курсор на первый ряд из 5 свечей. Цикл каждой свечи.
Распечатайте свечу и переместите два символа вправо для следующей свечи.
Однако после (нумерованных) 4-й, 8-й, 13-й, 17-й, 22-й и т. Д. Свечей (которые находятся в конце ряда),
переместите курсор на первую свечу в следующей строке. Это работает как на нечетных, так и на четных строках!
источник
A
самого начала: P (кстати, спасибо, что нашли еще один случай сЖеле , 67 байт
Монадическая ссылка, принимающая число и возвращающая список символов или полную программу, выводящую на печать.
Попробуйте онлайн!
Как?
источник
Japt , 94 байта
Попробуйте онлайн!
источник