Сегодня, 11 ноября, известен как День памяти , День перемирия или День ветеранов ( в зависимости от страны), и день раздумий и благодарность за военнослужащих и их службы, в частности , начали отражать конец европейских военных действий в первую мировую войну. Давайте поразмышляем об этом с помощью простого вывода ASCII-art 11/11
.
Учитывая вход n
, выведите ASCII-арт-представление, 11/11
которое имеет n
высоту единиц. В частности, каждый 1
состоит из вертикальных трубок ||
, косая черта состоит из косых //
черт, и каждый символ находится на расстоянии двух пробелов. Обратите внимание, что это означает изменение ширины вывода - например, для n=3
ниже, посмотрите, как «нижняя часть» косой черты находится на два пробела 1
слева от нее, но на четыре пробела 1
справа от нее, так что верхняя черта косой черты выстраивается соответственно и в двух пробелах 1
справа от него.
n = 1
|| || // || ||
n = 2
|| || // || ||
|| || // || ||
n = 3
|| || // || ||
|| || // || ||
|| || // || ||
n = 4
|| || // || ||
|| || // || ||
|| || // || ||
|| || // || ||
n = 5
|| || // || ||
|| || // || ||
|| || // || ||
|| || // || ||
|| || // || ||
и так далее.
вход
Один положительное целое число в любом удобном формате , n > 0
.
Выход
Представление ASCII-art в 11/11
соответствии с приведенными выше правилами и примерами. Лидирующие / завершающие символы новой строки или другие пробелы являются необязательными при условии, что символы выстроены в линию соответствующим образом.
правила
- Допустимы либо полная программа, либо функция. Если функция, вы можете вернуть вывод, а не распечатать его.
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
$'
и$`
в регулярном выражении? Я никогда не видел этого раньше и хотел бы понять это лучше.$&
это будет само совпадение).05AB1E , 24 байта
Попробуйте онлайн!
объяснение
Предыдущая 26-байтовая версия
Попробуйте онлайн!
источник
" "×"//"«.s¦R"|| || "s«vyû}»
Оказывается, palendromize не очень подходит, по причинам, более очевидным сейчас ... и ты все равно побьешь мой счет быстрее, хе.Perl, 45 байт
-9 байтов благодаря @Gabriel Benamy
47 байт кода + 1 байт для
-n
флага.Запустить с
-nE
флагами:источник
"|| ||"
в ,"|| "x2
а затем поворот(2+$_)
в просто$_
+( .. )
этого$@
задания. Это работает на моем компьютере, по крайней мере.+( .. )
, спасибо. Однако я не могу изменить ,"|| ||"
чтобы ,"|| "x2
потому что мне нужно два пробела между||
."|| "
имеет два пробела после каналов (по какой-то причине он просто не корректно рендерится здесь), и вы дублируете ту строку, в"|| || "
которую позаботятся дополнительные 2 пробела из$"x(2+$_)
||
когда их будет два.JavaScript (ES6),
8877 байтРекурсивный подход
не может бытьи не может быть самым коротким ..map
версия (88 байт):Понимание массива (86 байт):
for
версия цикла (89 байт):.replace
версия (85 байт):источник
Сетчатка, 29 байт
Порт моего решения JavaScript. Обратите внимание на пробел после
$*
и два пробела после||
.источник
V , 30 байтов
Попробуйте онлайн!
Как обычно, здесь есть hexdump:
источник
5i|| <esc>3b2r/
. Вы будете в немного другом месте, хотя я не могу читать V, поэтому я не уверен, имеет ли это значение.Пакетный, 130 байт
Не порт моего решения JavaScript. Поскольку
|
в Batch трудно манипулироватьx
s , я использую s в качестве заполнителей и заменяю их при выводе, это также удобно уменьшает размер моего кода. Начинается с установкиs
требуемого вывода дляn=1
(n
передается в командной строке), затем вставляется пробелы по мере необходимости для получения первой строки для фактического значенияn
, затем циклически выводится на печать строки и каждый раз смещает косую черту влево на один символ.источник
BaCon , 71 байт
Полная базовая программа в одной строке.
источник
1 TO
?Common Lisp, 216 байт
Я собираюсь сразу заявить, что это ужасное решение проблемы. Тем не менее, это работает, и я устал.
Использование:
По какой-то причине, вместо того, чтобы делать что-то вменяемое, я решил подойти к этому с помощью цикла внутри
format
вызова. Этот цикл перебирает содержимое, возвращенное другой фактической конструкцией цикла в самом конце, с удалением последних шести элементов (таким образом, повторяющихсяbutlast
s). Содержимое значения, возвращаемого этой конструкцией цикла, состоит из счетчика заполнения для передней части косой черты, символов заполнения (пробелов), счетчика заполнения для задней части косой черты и, наконец, тех же символов заполнения.Я довольно новичок в Лиспе и понимаю, что здесь определенно есть куда улучшаться.
источник
Python 2,
767571 байтВсе еще работает над более короткой версией, хотя и не так уж плохо.
спасибо mbomb007 за ошибку!
источник
x='|| '*2;print x+(n-i)*' '+'//'+' '*i+x[::-1]
//
в последнем ряду и два пробела после//
в первом ряду. В обоих случаях должно быть два пробела.R 86 байт
Просто простой
for
подход цикла:источник
Сетчатка , 40 байт
Попробуйте онлайн!
объяснение
Это превращает вход
N
вГде
S
соответствуетN
пробелам.Здесь происходят две вещи.
;{:
указывает, что этот и последний этап должны выполняться в цикле до тех пор, пока они не смогут изменить строку.:
указывает, что результат этого этапа должен быть напечатан после каждой итерации, и;
указывает, что конечный результат цикла (и, следовательно, всей программы) не должен быть напечатан. Сама сцена просто заменяетx
с|| ||
на первой итерации (и потом ничего не делает), так что теперь у нас есть первая строка требуемого вывода (и выведите его).Наконец, это сдвигает
//
один символ влево при условии, что осталось еще как минимум три пробела//
. После этого мы возвращаемся к предыдущему этапу (который теперь печатает только текущую строку, поскольку больше нетx
s), а затем повторяем.источник
Рубин, 60 байт
источник
C
116 9489 байтПопробуйте это на Ideone
источник
Рубин,
767473 байтаВ качестве функции требуется
7372 байта, считая определение:источник
Powershell, 66 байт
источник
read-host
-param($a)1..$a|%{$s="|| ";$s*2+" "*($a-$_)+"// "+" "*$_+$s*2}
C #, 150 байт
Golfed:
Ungolfed:
Тестирование:
Выход:
источник
Groovy, 63 символа / байты
Вот моя попытка использования Groovy с использованием анонимного замыкания и простых циклов для вывода искусства ASCII в стандартный вывод:
{n->n.times{println'|| '*2+' '*(n-it-1)+'//'+' '*it+' ||'*2}}
Вы можете попробовать это онлайн здесь . Просто нажмите «Редактировать в консоли», а затем «Выполнить скрипт».
Пытаясь сделать то же самое и возвращая строку вместо печати, я не мог получить меньше 71 байта:
{n->a='';n.times{a+='|| '*2+' '*(n-it-1)+'//'+' '*it+' ||'*2+'\n'};a}
источник
Python 3, 78 байт
Все еще пытаюсь сократить ...
источник
for
на ту же линию, что иdef
? (Вот так:)def m(n):for e in range(n):print(a," "*(n-e),"//"," "*(e+1),a)
Кроме того, вы можете сохранить два байта, заменив(e+1)
на-~e
.