Вызов
При заданном размере s выведите сетку кубов такого размера, состоящую из хеш-символов ( #
) и пробелов ( ).
Примеры:
1:
#
# # #
#
#
2:
# #
# #
# # # # # #
# # # # # #
# #
# #
# #
# #
3:
# # #
# # #
# # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # #
# # #
# # #
# # #
# # #
# # #
Сеть может фактически быть любой действительной сетью куба, которая может сложиться в куб, например:
# #
# #
# # # # # # # #
# # # # # # # #
# #
# #
# # # #
# # # #
# #
# #
# #
# #
# # # #
# # # #
правила
- Полученная сеть должна быть геометрически правильной (складывается в куб)
- Стандартные лазейки запрещены
- Внимательно прочитайте правила
- Это код-гольф , самый короткий ответ выигрывает, но не будет выбран
Ответы:
Python 2, 47 байт
Попробуйте онлайн!
Печатает эту сеть, выбранную для выравнивания по левому краю:
Линии имеют
n
или4*n
копии'# '
. Для каждого из них1,4,1
мы печатаемn
столько раз, сколько делалиn
дляn
строк. Наличиеexec
петли внутриfor
петли кажется расточительным, но я не видел лучше.Альтернативы, которые я тестировал:
(
def
Функции могут быть на одну короче как программа.)источник
Октава,
58444232 байтачастично вдохновлен ответом @xnor на python.
создает шаблон squre '#' для ввода 2, в результате получается следующий шаблон:
четыре
z
s соединены горизонтально:z
иy
иz
соединены вертикальноПопробуйте онлайн!
Предыдущий ответ:
Попробуйте онлайн!
Создает Т-образный
источник
Mathematica,
776052 байтаСпасибо Мартину Эндеру за игру в гольф на 8 байтов!
Безымянная функция, принимающая положительный целочисленный аргумент
#
и возвращающая строку с символами новой строки (включая завершающий символ новой строки); в каждой строке также есть пробел. Сначала мы определяем±
функцию, которая повторяет#
время ввода ; затемa
определяется как±"# "
(это#
символ, а не ввод!), и из этогоb
определяется набор#
коротких строк, а±{a,a,a,a}<>n
набор#
длинных строк. (В обоих случаях между соответствующими кавычками есть буквальный перевод строки.) Финал<>b
объединяет результирующий список строк со второй копией набора коротких строк. Пример вывода, когда#=2
( ответ xnor научил меня, что эта ориентация лучше для гольфа):Предыдущая версия этой реализации:
Исходное представление:
Создает строку отказа от
4*(3#+1)
части, каждая из которых является либо"# "
," "
или"\n"
; просто вычисляет, какие части использовать на основе индексаn
. Пример вывода, когда#=2
:источник
JavaScript (ES6), 59 байт
Выходные данные включают завершающий пробел в конце каждой строки и завершающий перевод строки.
источник
Рубин, 36 байт
Использование:
Рубин, 38 байт
Эта форма длиннее в Ruby, но я ожидаю, что в некоторых языках она короче.
Использование:
Оба ответа могут быть короче, если разрешено возвращать (предпочтительно) массив строк или (менее предпочтительно) одну строку вместо печати.
источник
Скала, 56 байт
источник
JavaScript (ES6), 71
Тест
источник
Java 8, 99 байт
источник
V ,
2423201820 байтовСо всеми показанными скрытыми персонажами
^[
есть0x1b
(экранирующий буквенный) и^V
есть0x16
(C-v
)Попробуйте онлайн!
Мне пришлось увеличить на счету, потому что
Ä
команда была глючит в этом новом V-тягеВыходы в этом формате:
с ведущей новой строкой
HexDump:
объяснение
Теперь, когда одно лицо сети было завершено, мы должны создать сеть
Альтернативное решение, если мы не выводим пробелы:
2120181618 байт(по той же причине, что и верхнее решение, эта ссылка TIO изменена)
Попробуйте онлайн!
источник
В , 14 байтов (не конкурирует)
Попробуйте онлайн!
По какой-то причине, эта проблема обнаружила множество ошибок. Теперь, когда все они исправлены, эта версия, к сожалению, не конкурирует, но приятно видеть, как должен выглядеть ответ V на этот вызов, когда не нужно добавлять тонны байтов, чтобы не отставать от моего неаккуратного кодирования.
Объяснение:
источник
J
проблема была не в неаккуратном кодировании AFAIK, я думаю, что это просто nvim default?Желе ,
2019 байтовПопробуйте онлайн!
-1 благодаря 44874 (Стинберг).
Я не могу помочь грязной грязи!
Это гольф?
2019 байт кажется слишком большим , видя Ссылку 1.Объяснение:
источник
@
но поменяв операндыx
себя:”#xẋ³Wẋ³K€Y
.Древесный уголь , 20 байтов
Код заканчивается пробелом. Попробуйте онлайн!
объяснение
Древесный уголь - это язык, специализирующийся на искусстве ASCII. Он также неполный, содержит ошибки и недостаточно документирован. Достаточно сказать, что потребовалось немало проб и ошибок, прежде чем он сделал то, что должен был.
Nλ
вводит число вλ
.G
это команда многоугольника, которую мы будем использовать здесь, чтобы нарисовать прямоугольник.↑λ←×⁶λ↓λ
задает границу многоугольника:λ
шаги вверх, шаги 6 раз влевоλ
иλ
шаги вниз . (Это три сλ
помощьюλ
блоков бок о бок.) Нижний край прямоугольника выводится. Затем многоугольник заполняется строкой#
.D
выдает текущий холст в стандартный вывод, что приводит к чему-то вроде этого:G
команды курсор находится в нижнем левом углу холста.M×⁴λ←
перемещает его влево на 4 разаλ
(эквивалентно двумλ
поλ
блокам).Положите их вместе, и вы получите сетку для кубов.
источник
Утилиты Bash / Unix,
72696866 байтПопробуйте онлайн!
Это работает, используя тот факт, что [4 ^ k / 3], когда написано в базе 2, равно 10101010 ... 01, с k 1. (Квадратные скобки здесь обозначают функцию пола.)
источник
Пайк, 16 байт
Попробуй это здесь!
Эквивалентно
Из-за непечатных
Это использует несколько приемов, чтобы уменьшить количество байтов:
[1, 4, 1]
XF
автоматически сбрасывает вывод в стек"#
в конце заменяется последней*
, что означает, что закрытие"
не требуется. Это происходит неявно, когда последний токен является строкой.источник
Python 2 ,
687165 байт-6 с благодарностью @sagiksp
Попробуйте онлайн!
В отсутствие поиска способа победить @xnor я опубликую свою рекурсивную функцию просто как альтернативный подход. Для f (5) отпечатков
Этот шаблон был выбран просто потому, что он может быть разбит на две части в отличие от всех остальных.
источник
PHP,
6462 байтаСохранено 2 байта благодаря Кристофу .
Печатает сеть как это:
(с ведущей новой строкой)
источник
while($a="282"[$i++/$s=$argv[1]]*$s)echo str_pad("\n",$a,"# ");
экономит 2 байта.Пакет, 111 байт
источник
Pushy ,
322928 байтПечатает сетку куба по левому краю. Это было трудно для гольфа ...
Попробуйте онлайн!
источник
Сетчатка ,
3937 байтЯ впервые использую Retina, я все еще пытаюсь понять, как это делать.
(с двумя пробелами после 4-й и 5-й строк)
Спасибо Мартину Эндеру за игру в 2 байта!
Попробуйте онлайн!
источник
$_
в нижней части, переключая некоторые вещи после удаления пустой строки. tio.run/nexus/… такое же количество байтов, но немного страшнее.QBIC ,
526740 байтовЗавершите переписать:
Это теперь использует этот шаблон:
Где
-
заполнены пробелы.источник
Пип ,
281716 байт15 байтов кода, +1 за
-n
флаг.Принимает размер в качестве аргумента командной строки. Попробуйте онлайн!
объяснение
Следующее не совсем то, как данные модифицируются, но это дает основную идею (для
a=2
):источник
05AB1E , 13 байтов
Попробуйте онлайн!
объяснение
Пример ввода
n=2
источник
C #, 152 байта
источник
SmileBASIC,
5750 байтРазъяснение:
После первой ПЕЧАТИ (размер = 2, @ - позиция курсора):
После СВИТОКА:
После второй ПЕЧАТИ:
источник
Common Lisp,
838179 байтИспользование:
(funcall #'(lambda(x)(format t"~v@{~v@{# ~}~:*~%~}~v@{~vt~0@*~v{# ~}~%~}"x(* x 3)(* x 2)))2)
Выход:
Как это работает?
Идеи по улучшению приветствуются.
источник