Любой обычный шестиугольник может быть облицован бриллиантами, например, так:
______
/_/_/\_\
/_/\_\/\_\
/\_\/_/\/_/\
\/_/\_\/_/\/
\_\/_/\_\/
\_\_\/_/
Мы рассмотрим вышеупомянутое значение размера 1
(так как стороны алмазов сделаны из одного /
или \
каждого). Такой же размер 2
будет выглядеть так:
____________
/ / /\ \
/___/___/ \___\
/ /\ \ /\ \
/___/ \___\/ \___\
/\ \ / /\ / /\
/ \___\/___/ \/___/ \
\ / /\ \ / /\ /
\/___/ \___\/___/ \/
\ \ / /\ \ /
\___\/___/ \___\/
\ \ \ / /
\___\___\/___/
Ваша задача - получить в 1
качестве входных данных такую мозаику ASCII (размером ), а также положительное целое число N
(в десятичной или одинарной форме ), указывающее размер требуемого вывода. Затем вы должны вывести уменьшенную версию той же самой плитки.
Обратите внимание, что шестиугольник может быть любого размера и размером до 1x1x1 (содержит три бриллианта).
Ни входные данные, ни выходные не должны содержать никаких завершающих пробелов, ни больше начальных пробелов, чем необходимо для выравнивания формы шестиугольника. И ввод, и вывод могут опционально содержать один завершающий символ новой строки (этот выбор не должен быть одинаковым для ввода и вывода).
Вы можете написать программу или функцию, принимая ввод через STDIN (или ближайшую альтернативу), аргумент командной строки или аргумент функции и выводя результат через STDOUT (или ближайшую альтернативу), возвращаемое значение функции или параметр функции (out).
Это код гольф, поэтому самый короткий ответ (в байтах) в выигрыше.
Пример Tilings
Вот несколько вариантов ввода, которые вы можете использовать для проверки вашего представления.
__
/_/\
\_\/
____
/_/\_\
/\_\/_/\
\/_/\_\/
\_\/_/
______
/_/_/\_\
/_/\_\/\_\
/\_\/_/\/_/\
\/_/\_\/_/\/
\_\/_/\_\/
\_\_\/_/
________
/_/\_\_\_\
/\_\/\_\_\_\
/\/_/\/_/_/\_\
/\/\_\/_/_/\/\_\
\/\/_/\_\_\/\/_/
\/\_\/_/\_\/_/
\/\_\_\/_/_/
\/_/_/_/_/
Следующий фрагмент содержит соответствующие выходы для входов N = 1
через N = 6
.
N-1
ведущие пустые строки. :(