Вам дана прямоугольная сетка символов .
и #
вот так:
..........
..#.......
....#..#..
...#......
..........
Ваша задача состоит в том, чтобы заполнить всю выровненный по осям ограничивающего прямоугольника #
с последующим #
:
..........
..######..
..######..
..######..
..........
Выровненный по оси ограничивающий прямоугольник - это самый маленький прямоугольник, который содержит все #
.
Хочу больше? Попробуйте Часть II!
правила
Вы можете использовать любые два различных печатных символа ASCII (от 0x20 до 0x7E включительно) вместо #
и .
. Я буду продолжать ссылаться на них как #
и .
для остальной части спецификации, хотя.
Ввод и вывод могут быть либо строкой, разделенной переводом строки, либо списком строк (по одной на каждую строку), но формат должен быть согласованным.
Вы можете предположить, что вход содержит как минимум одну #
и все строки одинаковой длины.
Вы можете написать программу или функцию и использовать любой из наших стандартных методов получения ввода и предоставления вывода.
Вы можете использовать любой язык программирования , но учтите, что эти лазейки по умолчанию запрещены.
Это код-гольф , поэтому самый короткий действительный ответ - измеренный в байтах - выигрывает.
Тестовые случаи
Каждый тестовый пример имеет вход и выход рядом друг с другом.
# #
... ...
#.. #..
... ...
... ...
#.. ###
..# ###
.#. ###
#.. ###
..# ###
..... .....
.#.#. .###.
..... .....
... ...
.#. .#.
... .#.
.#. .#.
... ...
.......... ..........
.......... ..........
....#..... ....#.....
.......... ..........
.......... ..........
.......... ..........
....#..... ...##.....
...#...... ...##.....
.......... ..........
..#....... ..###.....
....#..... ..###.....
...#...... ..###.....
.......... ..........
..#....... ..######..
....#..#.. ..######..
...#...... ..######..
.........# ..########
..#....... ..########
....#..#.. ..########
...#...... ..########
Ответы:
VBA Excel,
150 байт,146 байтИнструкция:
Создайте рабочую книгу с двумя пустыми листами: Sheet1 и Sheet2. Установите вход в Sheet1 и затем поместите следующий код в модуль кода Sheet1
Разрушил код:
Объяснение:
Пример ввода / вывода:
Предостережение: убедитесь, что каждая ячейка в Sheet2 всегда пуста при каждом запуске программы.
источник
=C.Value
в первой строке="#"
?05AB1E ,
70686961586040 байтовобъяснение
Попробуйте онлайн
источник
Mathematica,
9170 байт21 байт сохранен благодаря @MartinEnder .
Анонимная функция. Принимает матрицу символов в качестве входных данных и возвращает матрицу символов в качестве выходных данных. Символ Unicode - это U + F3C7 для
\[Transpose]
.источник
C #,
262251 байтБудет ли это гольф дальше, когда у меня будет больше времени.
Он компилируется в
Func<string[], string[]>
.Отформатированная версия:
источник
Желе ,
21191817 байтЭто полная программа. Ввод и вывод - это строки с 0 и 1 , разделенные переводом строки.
Попробуйте онлайн! или проверьте все контрольные примеры .
Как это устроено
источник
Сетчатка , 87 байт
Число байтов предполагает кодировку ISO 8859-1.
Использует
A
для.
иZ
для#
.Попробуйте онлайн!
источник
Scala, 317 символов
Более читаемая версия, вероятно, могла бы сыграть в нее больше:
источник
JavaScript (ES6), 168 байт
Принимает ввод в виде многострочной строки. Работает путем рекурсивного удаления начальных и конечных
.
s из всех строк до тех пор, пока не начинается хотя бы одна строка, а одна не заканчивается на a#
, затем выбирается максимально возможное количество строк, но начинается и заканчивается строки, содержащие#
и заменяет все.
s на#
. Вероятно, легко гольф.источник
R,
158155 байтЭта программа построчно принимает входные точки
.
и хэштеги#
.Ungolfed:
Вот детали третьей строки:
источник
PowerShell v3 +,
215162148144139 байтПринимает ввод как массив строк
$n
, с0
вместо.
и1
вместо#
. Затем мы перебираем циклы$n
, каждую итерацию проверяем, меньше ли текущая строка0
(то есть есть ли1
в ней), и если да, выводим строку. Использует псевдо-тройной на месте вif
/else
операции.Строка состоит из циклов по ширине входной строки. На каждой итерации мы добавляем a
0
или a в1
зависимости от того1
, найден ли где-нибудь в соответствующем вертикальном столбце. Например, в последнем тестовом примере это приведет к появлению строки типа0011001001
. Требуется v3 + для-in
оператора. Эта строка в паре с необычным регулярным выражением заменяет любые "внутренние"0
на1
s. Большое спасибо Business Cat в чате за помощь в этом. Наша строка будет0011111111
в этой точке.В противном случае выведите текущую (все нули) строку
$_
.Результирующие строки остаются в конвейере, а вывод неявным. По умолчанию
Write-Output
для массива строк используется новая строка между каждым элементом, так что визуально так и происходит.Примеры
источник
Python,
219212 байт(Хотя я думаю, что другой метод может быть короче)
Принимает и возвращает список списка символов.
Проверьте это на ideoone
источник
Perl 6 , 62 байта
Анонимная подпрограмма, которой можно передать массив массивов символов (представляющих матрицу) в качестве аргумента и изменить его на месте так, чтобы вызывающая область впоследствии имела измененный массив.
Используется
a
вместо#
символа «вкл». Персонаж «выключен» может быть чем угодно, ему все равно.источник
Python 3, 153 байта
Ввод и вывод - это список строк.
ungolfed
Теория Операции
Основная идея заключается в удалении строк и столбцов вокруг внешней части массива, если у них нет знака #. Все, что осталось, должно быть заполнено символом #.
Это реализовано с использованием рекурсивной функции.
Случай 1: строка 0 не содержит «#». Результатом является строка 0 + рекурсивный вызов оставшихся строк.
Случай 2: строка 0 содержит «#». Больше строк не может быть удалено. Поверните массив cw так, чтобы столбец 0 стал строкой 0. Затем рекурсивно обработайте повернутый массив. Результат вращается по часовой стрелке.
Базовый случай: массив был повернут 4 раза, что означает, что все внешние строки / столбцы были удалены, если это возможно. Все, что осталось, должно быть заполнено знаком "#"
источник
Perl, 51 байт
Включает +2 для
-0p
Дайте вход на STDIN, от персонажа
A
, на характерa
, например:bounding.pl
:Одинаковая длина:
источник
Python 2, 184 байта
Ввод и вывод - это список строк.
Попробуйте это на Ideone (развилка тестовой страницы Джонатана Аллана)
источник
Pyth , 50 байтов
Попробуйте онлайн!
источник