Задание
В этой задаче ваша задача состоит в том, чтобы нарисовать художественное представление ASCII из нескольких стопок коробок увеличивающейся высоты. В качестве входных данных вам дается количество стеков, которое является положительным целым числом. Первый стек содержит одну коробку размера 2x2
. Второй стек содержит 2 коробки размера 3x3
. В общем, k
стек содержит k
блоки размера (k+1)x(k+1)
.
Границы каждого прямоугольника нарисованы с помощью символов -|+
, а их внутренняя часть состоит из пробелов. Соседние блоки имеют общие границы, и углы всегда должны быть нарисованы +
, даже если они являются частью границы другого блока.
Примеры
Выход для 1
:
++
++
Выход для 2
:
+-+
| |
+-+
++ |
++-+
Выход для 3
:
+--+
| |
| |
+--+
| |
+-+ |
| +--+
+-+ |
++ | |
++-+--+
Выход для 5
:
+----+
| |
| |
| |
| |
+----+
| |
| |
| |
+---+ |
| +----+
| | |
| | |
+---+ |
| | |
| +----+
+--+ | |
| +---+ |
| | | |
+--+ | |
| | +----+
+-+ +---+ |
| +--+ | |
+-+ | | |
++ | | | |
++-+--+---+----+
Правила и оценки
Входные данные могут быть получены из STDIN, в качестве аргумента командной строки или в качестве аргумента функции. Выход должен идти в STDOUT или ближайший эквивалент. Допускается любое конечное количество конечных пробелов, как и предшествующих и завершающих строк, но не может быть никаких дополнительных предшествующих пробелов.
Это код-гольф, поэтому выигрывает самое низкое число байтов. Стандартные лазейки запрещены.
n
иn-1
относительно просты. Два плюса никогда не будут пересекаться.Integer.MaxValue
качестве входных данных.Integer.MaxValue
или эквивалентно.Ответы:
CJam,
64 6058 байтПостроение каждого столбца за один раз.
Попробуйте онлайн здесь
источник
Ява (
407349 символов)Несколько символов благодаря @Zgarb и @Geobits
Код
Не уверен, что это оптимально, но это моя первая попытка, я, вероятно, постараюсь изложить это на более хорошем языке для игры в гольф позже. Любые предложения приветствуются!
расширенный
Проверьте это здесь.
источник
&&
и||
на&
и|
. 2) Переместитеint
объявления вfor
(for(int i=0,j,x,z;...
). 3) У вас слишком много скобок в конце игры в гольф.a+1<=b+1
; они могут быть заменены наa<=b
.q*q+1
вероятно, следует просто присвоить другую переменную. Вы используете это 9 раз или около того, и вы можете сэкономить кучу, сказавa=q*q+1
один раз. Кроме того,q*(q+1)
это простоq*q+q
.Python 2,
144128 байтНемного вертится Немного вертелся везде.
источник
Python, 188 байт
Математически вычисляет символ в каждой
x,y
позиции. Было непросто сделать+
s-печать на обеих сторонах каждой коробки, а также остановить самые правые+
s из того, что было бы этой коробкойn+1
.источник
long
которого нет верхнего предела.C # - 304 байта (функция)
или 363 байта (полный код)
Я старался избегать заявлений. Ungolfed:
источник
long
вместо этого.Рубин (205 байт)
Принимает число в качестве аргументов командной строки. Это начинается с неудачи, приводящей новые строки, но это разрешено.
источник
JavaScript (ES6), 293 байта
Я запустил это в Firefox. Игнорируйте, что
"
консоль добавляет между строками. В основном это ES5, но я постараюсь сделать это еще больше.Ungolfed / ES5
источник
Python 2,
294290Я получил это работает, но мне все еще нужно играть в гольф больше. Я так счастлив, хотя, это было тяжело (по крайней мере, для меня)!
Я, вероятно, добавлю объяснение позже, если это сразу кому-то не понятно ...? Я в этом сомневаюсь.
Попробуй здесь
источник
Python - 243 байта
Создает все столбцы, заменяя перекрытия на столбцы, кроме первого. Затем он дополняется пробелами, транспонирует и печатает.
Я подумываю о переводе на Pyth, но мне понадобится замена для функции pad.
источник