Ваша задача - точно вывести следующее поле:
..................................................
..................................................
.. ..
.. ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++ ++ ..
.. ++ ++ ..
.. ++ .................................. ++ ..
.. ++ .................................. ++ ..
.. ++ .. .. ++ ..
.. ++ .. .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ .. ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ .. ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++ ++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. ++++++++++ .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .. .. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ .................. ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++ ++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. ++++++++++++++++++++++++++ .. ++ ..
.. ++ .. .. ++ ..
.. ++ .. .. ++ ..
.. ++ .................................. ++ ..
.. ++ .................................. ++ ..
.. ++ ++ ..
.. ++ ++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ++++++++++++++++++++++++++++++++++++++++++ ..
.. ..
.. ..
..................................................
..................................................
Ящик имеет высоту и ширину 50, пространства два ширины.
Вы должны написать функцию или программу, которая выводит или возвращает строку и не требует ввода.
Побеждает несколько байтов!
+
коробка имеет только 1 слой сверху и снизу? Это сделает ответы на основе алгоритма несколько более длинными, поскольку это означает, что два самых внутренних слоя не совсем квадратные.Ответы:
Пайк,
2017 байтПопробуй это здесь!
Функция объемного звучания была сделана для таких колмогоровских вопросов, как эта!
источник
J , 25 байт
Попробуйте онлайн!
объяснение
источник
echo
, это будет даже не функция, а значение. Хотя у J все равно нет функций с нулевым аргументом.C, 115 байтов
Определяет функцию
f
(вызов какf();
), которая печатает строку в STDOUT.источник
C,
535478477 байтТеперь это много в гольф: - /
Вот вывод;
источник
for(;i++<51;
и теперь я везде один: - /++i
Haskell, 72 байта
Решение @ Zgarb в Haskell. Я также попытался создать коробку, добавив слои вокруг ядра
["..",".."]
, но она на 9 байт длиннее (81 байт).источник
Сложенный, неконкурентный, 35 байтов
Попробуй это здесь!
Ungolfed:
Довольно просто.
surround
это функция, которая, ну, в общем, окружает объект с объектом заполнения. Например,(0) 1 surround
есть((1 1 1) (1 0 1) (1 1 1))
.$surround
вsurround
качестве функции, не оценивается.fold
принимает начальное значение, затем что-то, чтобы сложить, затем функцию. В этом случае,surround
будетfold
эды, окружающих первоначально пустая строку''
(эквив.ε
) С каждым символом строки.Сначала создается строка символов
$' + .'
, которая при умножении на число повторяет каждый символ. Это оставляет нас с:++ ..
. Это тогда приведено к последовательности. Затем мы повторяем эту строку трижды и, наконец, добавляем a.
, давая нам желаемую строку.Другой подход для 39 байтов:
#\
это вставка и принимает начальный символ строки в качестве начального значения. Это также работает только на массивах.источник
JavaScript (ES6), 117 байт
Нерекурсивное решение заняло у меня 128 байт:
Где
\n
представляет буквальный символ новой строки.источник
C 97 байтов
источник
Желе , 18 байт
Попробуйте онлайн!
Тот же подход, что и у J-ответа Згарба:
12ŒRA
естьabs([-12 … 12])
,x2
повторяет каждый элемент дважды,»þ`
создает таблицу максимумов,ị“ + .”
циклически индексирует в строку иY
объединяет их с помощью новых строк.источник
05AB1E ,
393533 байтаПопробуйте онлайн!
33-байтовая версия, которая теперь круче, потому что Эминья прокомментировал сохранение 2 байта:
Попробуйте онлайн!
источник
". + "DøJ3×'.«.pvy¤25yg-׫«})«»
для 33 байтов.… .+•â3fM~•3BSè.pvy¤25yg-׫«})«»
для 34 байтов на "более прохладной версии".MATL , 21 байт
Попробуйте онлайн!
источник
Рубин, 77 байт
источник
[i%26-13,i/52].map(&:abs).max%4
(сохраняет байт)Древесный уголь , 25 байт
Попробуйте онлайн! Ссылка содержит подробный режим для объяснения
источник
Python 3 , 89 байт
Попробуйте онлайн!
источник
Haskell, 385 байт
Первый раунд гольф-кода здесь ... с нетерпением жду встречи с другими.
Выход:
источник
where
в одну строку и используйте;
для разделения. 3)f:f:[]
isf:[f] and
d: '': '': [] `isd:" "
. 4)m
принимает параметр, но не использует его. Встроенныйm
иt
. 5) определить новую функцию#
для заменыreplicate
:c#x=c<$[1..8*n+x]
и назвать ее какd#2
и' '#(-6)
. 6)mod 2 == 0
можно заменитьeven
или перевернуть тест и использоватьodd
и гольфистаotherwise
:1<2
. ...b n=f:f:s:s:map(\x->l++x++r)(b$n-1)++s:s:f:[f]where f=d#2;s=l++' '#(-6)++r;l=d:d:" ";r=reverse l;d|odd n='+'|1<2='.';c#x=c<$[1..8*n+x]
.Октава, 53 байта
Создайте повторяющуюся последовательность от 1 до 8 от центра кнаружи и используйте его в качестве индекса для извлечения элементов
. ++ .
Попробуйте онлайн!
источник
Баш, 191 байт
Возможно, может стать меньше, но оказалось меньше, чем мои алгоритмические попытки.
источник
C #, 203 байта
Полная читаемая программа:
Гольф- функция :
источник
05AB1E , 33 байта
Попробуйте онлайн!
объяснение
источник
PowerShell ,
171151 байтПопробуйте онлайн!
Хо-хум ответ. Я уверен, что есть более короткий путь (учитывая длины других ответов, я уверен), но это показывает некоторые изящные уловки.
Объяснение:
1..12|%{' . +'[$_%4]}
генерирует массив строк (длиной один символ) в нужном нам шаблоне. Попробуйте онлайн!Затем мы добавляем,
|%{($a+=$_+$_)})+"$a."
который берет массив и расширяет его вбок на основе предыдущей строки. Попробуйте онлайн!Затем эти строки отправляются в цикл
|%{$c=if(++$i%2){('+','.')[($b=!$b)]}else{' '};$_.PadRight(25,$c)}
. На каждой итерации мы выбираем правильный символ (плюс, точка или пробел), а затем используем.PadRight
функцию для заполнения нужного количества символов.Попробуйте онлайн!Теперь у нас есть основание верхнего правого угла. Нам нужно перевернуть каждую строку
|%{,($_+-join$_[($z=25..0)])*2}
и добавить их вместе, чтобы мы могли получить верхнюю часть блока. Это делается с помощью-join
команды и индексации в обратном направлении25..0
. Кроме того, мы инкапсулируем строки в массив,(...)
и делаем их двойными*2
чтобы получить всю вершину. Попробуйте онлайн!Все это хранится в
$x
паренонах и инкапсулируется в них, поэтому строки помещаются в конвейер. Наконец, мы переворачиваемся$x
(обязательно вырезаем дубликат-дубликат среднего ряда, иначе у нас будет четыре..
в середине) и оставляем их на конвейере. НеявныйWrite-Output
вводит новую строку между строками, поэтому мы получаем это бесплатно.источник