Вступление
Иногда мои коробки слишком малы, чтобы в них что-нибудь поместилось. Мне нужно, чтобы вы сделали расширитель коробки! Итак, что делает коробку коробкой в этом испытании?
OOOO
O O
O O
O O
OOOO
Углы коробки всегда пробелы. Сама коробка может быть изготовлена из одного и того же персонажа. Этот символ может быть любым печатным символом ASCII , кроме пробела. Итак, вот эти символы:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Длина стороны коробки выше 4, 3 . Вы можете предположить, что длина стороны всегда положительна . Это означает, что это самая маленькая коробка, которую вам нужно обработать:
#
# #
#
Чтобы расширить поле, вам нужно увеличить длину каждой стороны. Давайте пройдем это шаг за шагом с приведенным выше примером. Сначала мы берем верхнюю часть коробки, которая:
OOOO
Мы расширяем это на единицу, поэтому получаем:
OOOOO
Теперь это верхняя и нижняя часть коробки. После этого мы делаем то же самое со сторонами слева и справа:
O
O
O
становится:
O
O
O
O
Теперь мы собираем коробку, в результате чего:
OOOOO
O O
O O
O O
O O
OOOOO
Задание
Получив поле, разверните его на 1. Поле можно указать несколькими строками или массивом.
Контрольные примеры
OOOO OOOOO
O O > O O
OOOO O O
OOOOO
XXXXXX XXXXXXX
X X > X X
X X X X
XXXXXX X X
XXXXXXX
~ ~~
~ ~ > ~ ~
~ ~ ~
~~
Это код-гольф , поэтому выигрывает представление с наименьшим количеством байтов!
Ответы:
V ,
65 байтовПопробуйте онлайн!
На самом деле это на байт длиннее, чем должно быть. Это должно было быть:
Но в этом есть неизвестная ошибка. :(
Объяснение:
источник
ä
- это дублирующий оператор (по сути, «y» и «p» вместе в одном байте), так жеäê
как и «дублирующий столбец»Vim, 7 байт
где Control - Контроль-V.
источник
YP
оба раза для согласованности?p
во время записи анимации, поэтому застрял с ним при расшифровке ответа. Это имеет значение? > _>;<C-v> G
иYP
. Это заставляет мой язык чувствовать себя дешево. : /JavaScript (ES6),
575352 байтаОбъяснение: Первое регулярное выражение дублирует второй столбец, а второе регулярное выражение дублирует второй ряд, таким образом увеличивая поле по желанию. Редактировать: 4 байта сохранены благодаря MartinEnder ♦.
источник
Python,
4942 байтаАнонимная лямбда:
-7 из хнор
Предыдущая версия:
D - это функция, которая дублирует второй элемент последовательности.
источник
lambda L:[s[:2]+s[1:]for s in L[:2]+L[1:]]
.map(D,D(s))
что вместо этого будет 43Сетчатка , 20 байт
Количество байтов предполагает кодировку ISO 8859-1.
Попробуйте онлайн! (Есть несколько дополнительных строк, которые включают набор тестов, в котором контрольные примеры разделены двумя переводами строк.)
объяснение
1
это предел, который ограничивает Retina для применения замены только к первому найденному совпадению.¶
соответствует одному переводу строки, поэтому нам нужно рассмотреть вопрос только о замене перевода строки в конце первой строки. Это заменить на¶$%'¶
, где$%'
вставляет всю строку после совпадения (специфичный для Retina элемент замещения). Следовательно, это дублирует вторую строку.Здесь
%
- режим для каждой строки, поэтому каждая строка обрабатывается индивидуально, а затем строки снова соединяются.2=
это тоже предел. Это означает «применить замену только ко второму матчу». Само совпадение представляет собой простой символ, а подстановка дублирует его. Следовательно, этот этап дублирует второй столбец.источник
Haskell, 24 байта
Использует идею RootTwo о дублировании второго ряда и столбца. Это
map f
делает это для каждой строки, аf.
затем делает это для строк.источник
PowerShell v2 +,
575352 байтаНемного похоже на Нейла ответ JavaScript . Первая замена соответствует началу строки и следующим двум символам и заменяет их первым символом и вторым символом-дважды. Вместо второй замены он заменяется индексированием массива для дублирования второй строки. Принимает ввод в виде массива строк. Результирующие фрагменты массива остаются на конвейере, и печать неявна.
Сохранено 4 байта благодаря Мартину.
Несколько примеров:
источник
Брахилог ,
2826 байт2 байта благодаря Fatalize.
Попробуйте онлайн!
источник
MATL , 12 байт
Ввод - это двумерный массив символов с точкой с запятой в качестве разделителя строк. Например, первый тестовый пример имеет вход
Попробуйте онлайн! Тестовые случаи 1 , 2 , 3 .
объяснение
Код выполняет следующее дважды: повторяет вторую строку массива и транспонирует.
Чтобы повторить вторую строку массива
m
×n
, вектор[1 2 2 3 ... m]
используется как индекс строки. Этот вектор генерируется следующим образом: диапазон[1 2 3 ... m]
, прикрепить другой2
, сортировать.источник
Pyth , 10 байт
Попробуйте онлайн!
источник
СЭД
69 19(14 + 1 за -r) 15источник
/.\(.\)/\0\1;2p
?2p
, я думал , что есть способ сделать это, но я не мог найти это. Благодарность!\0
, так как они начинаются с 1. Онлайн-руководство GNU sed ни о чем не говорит. Тем не менее, использование&
, я думаю, эквивалентно и короче.\0
тогда использовать ?CJam , 14 байтов
Аналогично моему ответу на MATL , но повторяет второй-последний ряд вместо второго.
Попробуйте онлайн!
объяснение
источник
К, 15 байт
Принимает ввод в виде матрицы символов:
Примените функцию дважды (
2{…}/
), которая дает transpose (+
) правого аргумента indexed (x@
) с помощью инкрементного декодирования длины (&
) одного плюс (1+
) списка местоположений, равных 1 (1=
) в диапазоне от 0 до (!
) размер внешнего измерения правого аргумента (#x
).Шаг за шагом,
Попробуйте здесь с ОК.
источник
APL,
1715 байтТестовое задание:
Объяснение:
источник
⌽⍉
или⊖⍉
, но в этом случае это не имеет значения.ListSharp , 326 байт
Мне определенно нужно добавить вложенность функций, но это работает очень хорошо
прокомментируйте, если хотите объяснение
источник
JavaScript,
160146141 байтисточник
Dyalog APL , 14 байтов
Например, для
мы находим индексы; {1, 2, 3} для строк и {1, 2, 3, 4} для столбцов. Теперь мы отбрасываем начальные элементы для получения {2, 3} и {2, 3, 4}, а затем добавляем {1, 2}, давая {1, 2, 2, 3} и {1, 2, 2, 3, 4}. Наконец, мы используем это для выбора строк и столбцов, одновременно удваивая строку 2 и столбец 2.
Попробуй APL онлайн!
источник
Рубин, 46 байт
Очень простое решение, принимая входные данные в виде массива строк. Я не люблю дублированные
insert
буквы, поэтому постараюсь сыграть в гольф.источник
C #,
127124 байтаКомпилирует в
Func<List<string>, List<string>>
.Отформатированная версия:
источник