Вызов
Создайте функцию или программу, которая при задании целого числа size
выполняет следующие действия:
Если size
равно 1, выведите
H H
HHH
H H
Если size
больше 1, выведите
X X
XXX
X X
где X
вывод программы / функции дляsize - 1
(Если вы предпочитаете, базовый случай может соответствовать 0
, если вы укажете в своем ответе)
Любой из следующих форматов вывода является приемлемым, в зависимости от того, что вам удобнее:
Строка требуемой структуры с любыми двумя различными символами, соответствующими
H
иspace
Двумерный массив с требуемой структурой, с любыми двумя различными значениями, соответствующими
H
иspace
Массив / список строк, с одной строкой вывода в каждой строке, с любыми двумя различными значениями, соответствующими
H
иspace
Допускаются пробелы, если в каждой строке есть постоянное количество пробелов. Два разных выходных символа могут зависеть от всего, что вы выберете, если они различны.
Укажите, какой формат вывода ваш код возвращает.
Тестовые случаи
1
H H
HHH
H H
2
H H H H
HHH HHH
H H H H
H HH HH H
HHHHHHHHH
H HH HH H
H H H H
HHH HHH
H H H H
3
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
H HH HH H H HH HH H
HHHHHHHHH HHHHHHHHH
H HH HH H H HH HH H
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
H H H HH H H HH H H H
HHH HHHHHH HHHHHH HHH
H H H HH H H HH H H H
H HH HH HH HH HH HH HH HH H
HHHHHHHHHHHHHHHHHHHHHHHHHHH
H HH HH HH HH HH HH HH HH H
H H H HH H H HH H H H
HHH HHHHHH HHHHHH HHH
H H H HH H H HH H H H
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
H HH HH H H HH HH H
HHHHHHHHH HHHHHHHHH
H HH HH H H HH HH H
H H H H H H H H
HHH HHH HHH HHH
H H H H H H H H
Это код-гольф , поэтому выигрывает самое низкое число байтов для каждого языка!
источник
Ответы:
Wolfram Language (Mathematica) , 46 байтов
Возвращает 2d массив
0
s и1
s.Попробуйте онлайн!
источник
Nest
(несколько раз) функцию несколько раз. Как и любые другие материалы (Jelly?). ЭтоArrayFlatten
... ну, встроенный, ноFlatten[#,{{1,3},{2,4}}]
в этом случае он ведет себя примерно так же, как и . (не тестировал)Холст ,
1412 байтовПопробуй это здесь!
Объяснение:Где
I
ввод,X
это шаблон, сгенерированный предыдущим циклом («H» для первого цикла), и<space>
это пустое пространство в первой и третьей строке шаблона, добавленное неявно с помощью+
.-2 байта благодаря дзайме !
источник
MATL ,
1211 байтС учетом входных данных
n
выводится матрица, содержащая0
иn
.Попробуйте онлайн!
Чтобы преобразовать это в символьную матрицу
H
и пробел добавитьg72*c
в заголовок. Попробуйте тоже онлайн!Или добавьте,
]1YC
чтобы матрица отображалась графически. Попробуйте это в MATL Online!объяснение
источник
Stax ,
1615 байтЗапустите и отладьте его
Это представление программы в ascii с комментариями. Эта программа строит Н вбок, а затем транспонирует один раз в конце.
Бонусная 14-байтовая программа - использует свой ввод в качестве выходного символа. Теоретически, это не даст правильную форму на 10, так как он имеет 2 цифры, но попытка запустить, что приводит к сбою моего браузера.
источник
Рубин , 72 байта
Выход - это список строк, по одной строке на строку.
Попробуйте онлайн!
источник
Haskell , 50 байтов
Попробуйте онлайн!
Делает сетку из 0 и 1. Один символ длиннее для пробелов и H.
Haskell , 51 байт
Попробуйте онлайн!
источник
Желе ,
171615 байтЭто полная программа, которая печатает 2D-массив из 1 и 0 .
Попробуйте онлайн! или посмотрите вывод с H и пробелами.
источник
APL (Dyalog Classic) , 14 байтов
Попробуйте онлайн!
⎕
оценил вход n,⍳⎕⍴3
все n-кортежи с элементами из 0 1 22|
мод 2×/¨∘.≥⍨
сформировать матрицу, сравнивая каждую пару кортежей a и b - если все элементы a являются ≥ соответствующими элементами b, это a 1, иначе 0источник
SOGL V0.12 , 13 байтов
Попробуй здесь!
источник
R , 64 байта
Попробуйте онлайн!
Сокращает продукт Кронекера, как бесстыдный порт ответа Луиса Мендо .
Сноска печатает результат хорошо, но это анонимная функция , которая возвращает
matrix
из1
дляH
и0
для пространства.источник
Java (OpenJDK 9) , 135 байт
Попробуйте онлайн!
Возвращает
int[][]
с0
дляH
и1
дляspace
. Это на самом деле "вырезает" стенуH
, а не "наваливаетH
".Пояснения
источник
V , 22 байта
Попробуйте онлайн!
HexDump:
Это в основном тот же подход, что и ковер Серпинского и The Fractal Plus на Anarchy Golf.
источник
Python 2 , 70 байт
Попробуйте онлайн!
Функция выводит список строк.
Python 2 , 84 байта
Попробуйте онлайн!
Использует тот же шаблон, что и другие 3 * 3 фрактальные модели:
источник
J ,
2522 байтаПопробуйте онлайн!
источник
Haskell,
73676455 байтЭто работает только с последней версией
Prelude
, потому что он экспортирует<>
изData.Semigroup
. Чтобы запустить его на TIO, добавьте импорт, как здесь: попробуйте онлайн!Редактировать: -9 байт благодаря @ Potato44.
источник
(#)
,g#f=g<>f<>g
если вы используете GHC 8.4. Это потому чтоSemigroup
сейчас в прелюдии.Perl 5 ,
4644434140 байт1 основанный подсчет Использует
0
и1
дляH
и пространства, имеет ведущий1
(пространство)По мотивам классической идеи от mtve.
Попробуйте онлайн!
источник
\321
это необходимо, любой персонаж, кажется, работает.//
а$'
также может заменить//g
и$`
, но я не уверен , что это приводит к улучшению.\321
был битовый набор.
(использовался для генерации другого фрактального паттерна). Но я бросил бит-комплемент, поэтому, конечно, он мне больше не нужен. Я использовал//g
и $ `, так что я могу легко протестировать код из командной строки (//
и$'
я не вижу выигрыша, который я вижу, полученный байт теряется с пробелом или!
снова)Vim -
665654 байтаA @ c H esc " r d ^ q c { ctrl-v } " a y g v r space g v d " a P P " a P V G " b y P g v ctrl-v $ d " a P . . G " b p q @ r
Ввод берется как число в буфере.
источник
:set nowrap
чтобы увидеть результат, на 4 и более.APL (Dyalog Unicode) ,
3834 байта SBCSВыходные данные - это двумерный массив,
1
представляющий H и0
представляющий пространство.Попробуйте онлайн!
источник
f←
и считать символы как 1 байт каждого: codegolf.meta.stackexchange.com/questions/9428/... Это также считается законным принимать входные данные от⎕
, т.е. заменить⍣⍵
с⍣⎕
и падение брекеты внешней DFN в.1 1⍴1
можно записать как,⍪1
и тогда паренсы вокруг оператора становятся ненужными. Если вы знакомы с поездами - они могут помочь здесь.⍨
ваш друг:(⍵,(0×⍵),⍵)
=>(⍵,⍵,⍨0×⍵)
Древесный уголь ,
3029 байтПопробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Распечатайте оригинал
H
.Цикл по первым
size
степеням 3.Переместите курсор назад к началу координат.
Trim
Это необходимо, так как исходная печатьH
и отражение ниже перемещают курсор.Скопируйте предыдущую итерацию вниз, создав домино.
Скопируйте результат вниз и вправо, создав тетромино.
L
Обрежьте холст до формы триомино.Отразите холст по горизонтали и вертикали с перекрытием, завершив итерацию.
Древесный уголь лучше у некоторых фракталов, чем у других. Вот похожая идея, но почти в два раза меньше:
Попробуйте онлайн! Ссылка на подробную версию кода.
источник
Python 2 , 143 байта
Попробуйте онлайн!
-30 байт благодаря рекурсивной
Код обертки для хорошего форматирования. это работает нормально, если вы удалите его
источник
PHP 7,
125109 байтдругой подход: вместо того, чтобы рекурсивно вкладывать и выравнивать результат, он просто перебирает строки и столбцы и использует 3-й цикл, чтобы выяснить, печатать
H
или_
.Редактировать: Сохранено много путем объединения циклов строки / столбца в один, хотя потребовалось немного, чтобы получить правильное уменьшение для внутреннего цикла. Требуется PHP 7 для оператора питания.
Попробуйте их онлайн !
печатает результат. Беги как труба с
-nR
.квалифицированная функция,
147130 байтвозвращает одну строку. Запустить с настройкой по умолчанию (нет
php.ini
).источник
%3==1
можно заменить на%3&1
.Желе , 25 байт
Попробуйте онлайн!
Хотя это больше, чем у существующего представления Jelly , оно пытается сгенерировать каждый символ независимо только от координаты.
В частности, если координата
соответственно.
(x,y)
(1-индексирование), первая ссылка возвращается0
и1
соответствуетH
иКроме того, 5 байтов
ị⁾ HY
используются для форматирования, поэтому эта программа (20 байтов) также допустима (но вывод не выглядит так же хорошо):источник
T-SQL ,
267261 байтисточник
PHP 7, 153 байта
Запустите с настройками по умолчанию (нет
php.ini
) или попробуйте его онлайн .источник
Perl, 64 байта
Требуется
-p
, вход взят из стандартного ввода. На выходе получается HH
s.Попробуйте онлайн!
источник
-p
(я думаю, что это слишком снисходительно для Perl, но это так и сейчас)PHP (5,6+), 94 байта
Используется с
-F
опцией командной строки. Предполагает, что интерпретатор по умолчанию (-n
). Не будет работать на версиях, предшествующих 5.6, из-за оператора питания.Пример использования
Попробуйте онлайн!
источник
$s.$s.$s
вместо$s.=$s.$s
. И вам не нужно<?
с-R
вместо-F
.-R
, вы можете показать мне полное использование?-nF
:echo <input> | php -nR '<code>'
.-r
это почти то же самоеphp -nr '<code>' <arguments>
.preg_filter
состоит в том, чтобы повторять каждую строку, сохраняя при этом новые строки, примерно эквивалентныеjoin("\n",array_map(function(){...},split("\n",$s.$s.$s)))
, но значительно менее многословные. Первоначально яstr_pad
изменился,sprintf
потому что он на один байт короче:'"\0".str_pad($$i++/$i&1?"\0":"",$i)."\0"'
CJam -
103978776 байтЭта программа выполняет довольно многословную рекурсию с «ручным кодированием». Нет умных матричных умножений. На протяжении всей рекурсии в верхней части стека находится массив, собирающий выходные данные, полученные от родительских вызовов. Сразу после каждого набора рекурсивных вызовов выходные данные рекурсивных вызовов необходимо сжать вместе, чтобы убедиться, что выходные данные верны, когда стек печатается линейно в конце программы. Стек аргументов, передаваемых по рекурсии, сохраняется в переменной
A
.Попробуй онлайн
источник
К (нгн / к) , 18 байт
Попробуйте онлайн!
источник
Japt , 23 байта
Попробуйте онлайн!
Распаковано и как это работает
Использование транспонированного шаблона
гораздо легче обрабатывать, чем исходный
H
шаблон, по крайней мере, в Japt, где этоI
можно сделать с помощью повторения строки и заполнения по центру.источник
C ++ 11 - 138 байт
Однако не уверен, что этот ответ имеет правильный синтаксис.
Разгруженный с рабочим кодом
источник