Если в качестве входных данных указан арт-шестиугольник ASCII, выведите тот, у которого все стороны на одну единицу длиннее.
_____
____ / \
/ \ / \
/ \ / \
\ \ => \ \
\ / \ /
\____/ \ /
\_____/
Входные шестиугольники будут иметь симметрию 180 градусов, но в противном случае стороны могут быть разной длины. Выше боковые длины (2, 4, 3) увеличены до (3, 5, 4). Длина стороны будет отлична от нуля.
Шестиугольники состоят из подчеркивания _
, косой черты /
и обратной косой черты\
. Обратите внимание, что из горизонтальных краев (сделанных с подчеркиванием) верхний край находится на отдельной линии, а нижний - нет.
I / O
Я собираюсь быть сторонником и требовать форматирования ascii-art здесь: ввод и вывод должны быть строкой с символами новой строки, представляющими изображение, а не списком строк. Конечно, ваш код может печатать каждую строку по очереди, чтобы получить изображение, или читать STDIN строку за раз для ввода, если ваш язык может сделать это.
Детали
Ввод может включать необязательный завершающий перевод строки, если вы хотите, но в противном случае не будет пустых строк. Вы можете выбрать либо отсутствие пробелов на входе, либо пробелы для заполнения каждой строки одинаковой длиной (самой длинной строки).
Вывод должен быть на одном уровне с левым краем экрана, как и ввод. Вы можете иметь дополнительные новые строки выше и ниже, а также завершающие пробелы.
Контрольные примеры
Ввод с последующим выводом.
_
/ \
\_/
__
/ \
/ \
\ /
\__/
____
/ \
/ \
\ \
\ /
\____/
_____
/ \
/ \
/ \
\ \
\ /
\ /
\_____/
_
/ \
/ /
/ /
/ /
/ /
\_/
__
/ \
/ \
/ /
/ /
/ /
/ /
\ /
\__/
Leaderboard
<iframe src="https://xmikee1.github.io/ppcg-leaderboard/?id=185760" width="100%" height="100%" style="border: none;">Oops, your browser is too old to view this content! Please upgrade to a newer version of your browser that supports HTML5.</iframe><style>html,body{margin:0;padding:0;height:100%;overflow:hidden}</style>
IEnumerable
символов?Ответы:
Stax , 28 байт
Запустите и отладьте его
Кажется, должен быть способ сделать это в основном с помощью регулярных выражений, но я все еще ищу ...
источник
Сетчатка 0.8.2 , 84 байта
Попробуйте онлайн! Работает с неправильными шестиугольниками. Ввод / вывод не дополняется. Объяснение:
Расширьте внутренность шестиугольника.
Зафиксируйте вершину.
Зафиксируйте дно.
источник
JavaScript (ES6),
159 156 153150 байтПопробуйте онлайн!
комментарии
NB: альтернативные символы используются ниже для разделителей регулярных выражений, чтобы не допустить схода с ума подсветки синтаксиса SE.
источник
Древесный уголь , 48 байтов
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Введите и объедините все строки, кроме первой. (Ввод в формате JSON сделает большую часть этого ненужным при экономии 11 байт.)
Подсчитайте количество
/
s,/
s и_
s в строке и используйте его для вычисления длины новой стороны (в случае_
s как строки_
s этой длины).Нарисуйте увеличенный шестиугольник.
Альтернативное решение, также 48 байтов:
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Введите все строки. (Ввод в формате JSON сделает это ненужным при экономии 17 байт.)
Нарисуйте верхнюю правую и нижнюю левую части шестиугольника отдельно.
Подсчитайте количество
/
s,/
s и_
s в строке и используйте его для вычисления длины новой стороны.Выведите верх или низ и двигайтесь вниз по строке, если это была верхняя строка.
Нарисуйте обе стороны справа или слева.
источник
APL (Dyalog Unicode) ,
7574 байта SBCSПопробуйте онлайн!
'.+'⎕s'&'
разделить ввод на строки↑⍵
смешать строки в матрицу⍺⍳
заменить' /\_'
на0 1 2 3
(0,0,⍨⍉)⍣3⍉
окружить слоем 0s сверху и снизу и двумя слоями 0 слева и справа{⊃0~⍨1⌷⍵,⍨⍉⍵}⌺3 3
для каждой ячейки выберите первый ненулевой из: верхний, нижний, левый, правый из окрестности 3х3 с центром в ней2⌈/
макс в парах по горизонталиa×1=(+⍀×a)⌊⊖+⍀⊖×a←
сохранить только внешнюю границу ненулевых⍺[
]
заменить0 1 2 3
на' /\_'
источник
PowerShell , 126 байт
Попробуйте онлайн!
источник
Perl 5 ,
177156145 байтМожет быть короче? Пока не вижу как. С комментариями и добавлением новых строк и заголовка + нижнего колонтитула:
Попробуйте онлайн!
Строка # 1 разбивает многострочную строку ввода в массив @l.
Строка № 2 дублирует вторую и последнюю строки без символов _.
Строка № 3 добавляет пробелы, где это необходимо, в строке 2 до второй последней.
Строка # 4 расширяет две стороны ___ одной _ и возвращает массив строк @l в виде одной многострочной строки.
источник