Приведенная ниже схема станет основой этой проблемы.
/\
\/
/\
/ \
/ \
/\/ \/\
\/\ /\/
\ /
\ /
\/
/\
\/
При заданной ширине и высоте ввода каждый из них >=1
выводит вышеупомянутый художественный шаблон ASCII, повторяемый столько раз, соединяясь (и перекрывая друг друга) с небольшими бриллиантами.
Например, здесь ввод с width = 2
и height = 1
:
/\ /\
\/ \/
/\ /\
/ \ / \
/ \ / \
/\/ \/\/ \/\
\/\ /\/\ /\/
\ / \ /
\ / \ /
\/ \/
/\ /\
\/ \/
Вот вход width = 3
и height = 2
:
/\ /\ /\
\/ \/ \/
/\ /\ /\
/ \ / \ / \
/ \ / \ / \
/\/ \/\/ \/\/ \/\
\/\ /\/\ /\/\ /\/
\ / \ / \ /
\ / \ / \ /
\/ \/ \/
/\ /\ /\
\/ \/ \/
/\ /\ /\
/ \ / \ / \
/ \ / \ / \
/\/ \/\/ \/\/ \/\
\/\ /\/\ /\/\ /\/
\ / \ / \ /
\ / \ / \ /
\/ \/ \/
/\ /\ /\
\/ \/ \/
Правила и ввод / вывод
- Вход и выход могут быть заданы любым удобным способом .
- Вы можете распечатать его в STDOUT или вернуть как результат функции.
- Либо полная программа или функция приемлемы.
- Любое количество посторонних пробелов является приемлемым, при условии, что символы выстраиваются соответствующим образом.
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
Ответы:
Холст ,
2625242118 байтПопробуй это здесь!
-3 байта за счет исправления
m
неповторяющегося холстаОбъяснение:
источник
JavaScript (ES8),
167161159 байтNB: это кодирование шаблона. Смотрите мой другой ответ для более короткого математического подхода.
Принимает вход как
(width)(height)
.Попробуйте онлайн!
Как?
Мы кодируем верхнюю половину шаблона цифрами:
\
/
Это дает:
Для нижней половины мы используем строки4,3,2,0 с
/
и\
перевернутые.источник
JavaScript (ES6), 139 байт
Это использует совершенно иной подход, чем мой первоначальный ответ, поэтому я публикую это отдельно.
Принимает вход как
(width)(height)
.Попробуйте онлайн!
Как?
Учитывая ширинуw и высоту h , мы рисуем вывод за символом по сетке, которая:
Для всех остальных ячеек мы вычисляем:
Мы рисуем,
"/"
если:Мы рисуем,
"\"
если:Или мы рисуем пробел, если не выполняется ни одно из этих условий.
источник
C ++ (gcc) , 137 байт
Попробуйте онлайн!
объяснение
источник
#include
Haskell , 179 байт
Попробуйте онлайн!
Haskell , 181 байт
Попробуйте онлайн!
источник
reverse.map(map k)<>id
over(++).reverse=<<map(map k)
экономит 3 байта в обоих решениях.map t
можно статьt<$>
иtake$10*x+2
сохранить еще один байт, и, наконец, вы можете использоватьcycle"\\ /"!!n
более"\\ /"!!mod n 3
- теперь второй короче :) Попробуйте онлайн!Древесный уголь ,
242220 байтПопробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Нарисуйте одну восьмую оригинального рисунка.
Дублируйте его три раза, чтобы завершить исходный шаблон.
Скопируйте необходимое количество раз по горизонтали.
Скопируйте необходимое количество раз по вертикали.
источник
Powershell, 146 байт
объяснение
Шаблон массива 10х10 символов:
Сценарий:
Две вещи для гольфа:
replace
.источник
Perl 5
-p
, 148 байтПопробуйте онлайн!
источник
PHP, 159 байт
узор взят из маззи; переведено в 1-2-3, преобразовано в base26 -> декодировано программой
требует PHP 5.5 или выше. Запустите
-nr
или попробуйте онлайн .расчет может быть короче (как это было для Арно). Я могу посмотреть на это.
источник
Котлин ,
196135 байтовСохранено 61 байт благодаря предложению ASCII-only использовать алгоритм AZTECCO C ++.
Попробуйте онлайн!
источник
Python 3 ,
194192187127 байтовРешение @ ASCII-only:
Попробуйте онлайн!
Оригинальное решение
Попробуйте онлайн!
-2 байта благодаря @Black Owl Kai, показывающему, что вершины и впадины могут быть доступны из сгенерированного массива, а не в отдельных переменных.
-5 больше байтов благодаря @Black Owl Kai, который использует более креативный способ хранения бриллиантов
Создает эту часть каждого алмаза:
/\
Добавляется в конце каждой строки , чтобы завершить его. Затем/
s и\
s меняются местами для формирования вершины каждого ромба, и порядок линий меняется на обратный, чтобы сформировать нижнюю половину. Наконец, он добавляет самый верхний ряд/\
s и самый нижний ряд\/
s, чтобы завершить изображение.источник
+=
/*=
назначения и перевернув весь бриллиант вверх ногами, упрощая хранение последней строки