задача
С учетом элемента-обертки и трехмерного массива без зазоров, оберните массив сверху, снизу и вокруг. Вы должны обрабатывать как символьные, так и числовые данные, но оболочка и настоящее будут иметь одинаковый тип данных.
Пример персонажа
Для символьных данных вы можете выбрать обработку трехмерных массивов отдельных символов или двумерных массивов строк:
Учитывая 2 слоя, 2 строки, 4 столбца символьный массив
[[["Y","o","u","r"],
["g","i","f","t"]],
[["g","o","e","s"],
["h","e","r","e"]]]
и символ "."
, ответьте 4 слоя, 4 строки, 6 столбцов символов
[[[".",".",".",".",".","."],
[".",".",".",".",".","."],
[".",".",".",".",".","."],
[".",".",".",".",".","."]],
[[".",".",".",".",".","."],
[".","Y","o","u","r","."],
[".","g","i","f","t","."],
[".",".",".",".",".","."]],
[[".",".",".",".",".","."],
[".","g","o","e","s","."],
[".","h","e","r","e","."],
[".",".",".",".",".","."]],
[[".",".",".",".",".","."],
[".",".",".",".",".","."],
[".",".",".",".",".","."],
[".",".",".",".",".","."]]]
или дан 2-рядный, 2-колоночный массив из 4-х символьных строк
[["Your",
"gift"],
["goes",
"here"]]
и символ "."
, ответьте на 4 строки, 4 столбца массив из 6 символов
[["......",
"......",
"......",
"......"],
["......",
".Your.",
".gift.",
"......"],
["......",
".goes.",
".here.",
"......"],
["......",
"......",
"......",
"......"]]
Числовой пример
Учитывая 2 слоя, 2 строки, 2 столбца числового массива
[[[1,2],
[3,4]],
[[5,6],
[7,8]]]`
и число 0
, ответь 4 слоя, 4 строки, 4 столбца числового массива
[[[0,0,0,0],
[0,0,0,0],
[0,0,0,0],
[0,0,0,0]],
[[0,0,0,0],
[0,1,2,0],
[0,3,4,0],
[0,0,0,0]],
[[0,0,0,0],
[0,5,6,0],
[0,7,8,0],
[0,0,0,0]],
[[0,0,0,0],
[0,0,0,0],
[0,0,0,0],
[0,0,0,0]]]
Ответы:
J ,
1615 байтЭто анонимный глагол. Попробуйте онлайн!
Спасибо Адаму за 1 байт!
объяснение
источник
h=.,,[
JavaScript (ES6), 97 байт
Где
a
находится трехмерный массив иe
является оберткой. Автоматически преобразует двумерный массив строк в трехмерный массив символов. Альтернативная версия для whena
- это двумерный массив строк иe
символ, и вы хотите вернуть двумерный массив строк:источник
e
.Октава,
2327 байтмассив:
a
padval:
p
Это можно назвать как:
попробуйте (вставьте!) в Octave Online
примечание: предыдущий ответ принят по умолчанию
источник
Python,
106104126 байтовНазывается как
w(gift, wrapping character)
. Можно использовать строку и обозначение массива. Попробуйте онлайн!источник
Perl 6, 86 байт
Лямбда, которая принимает трехмерный массив и символ переноса в качестве аргументов.
источник
Dyalog APL ,
31191312 байтПочти транслитерация (31 байт) решения @ Zgarb .
Анонимная функция. Левый аргумент оборачивается, правый аргумент - подарок.
⊣h⍤1
h с левым аргументом анонимной функции применяется к столбцам⊣h⍤2
h с левым аргументом анонимной функции применяется к строкамh←
ч применительно к основным клеткам , то есть слои аргументов анонимной функции, в которой ч является⍪
левый аргумент предшествует правому аргументу⍪
приурочен к⊣
левый аргументДругими словами, h - это функция, которая окружает свой правый аргумент (дар) своим левым аргументом (оболочкой). Затем h применяется к слоям подарка, затем к строкам этого столбца и, наконец, к его столбцам.
Попробуй APL онлайн!
Это решение Dyalog APL версии 16.0 (19 байтов - любезно предоставлено @ngn ) обрабатывает любое количество измерений:
⍵
подарок@(
размещены в1+
один плюс⍳
все показатели⍴⍵
форма подарка)⊢
в массиве, состоящем из⍺⍴⍨
оболочка изменена в форме2+
два добавлены в⍴⍵
форма подаркаДругими словами, мы создаем массив полностью из элементов-оберток, который в каждом измерении на два элемента больше подарка, затем помещаем подарок в этот массив (таким образом, заменяя элементы-обертки в этих позициях) со смещением в один от края, т.е. в центре.
Мое собственное изобретение (-1 благодаря @ngn ):
Это применяет анонимную последовательность операций 6 раз, каждый раз с оберткой в качестве левого аргумента и результатом предыдущего приложения в качестве правого аргумента (хотя в первый раз это будет неизмененный подарок):
(
анонимный функциональный поезд⌽
обратные столбцы2 3 1⍉
строки-слои, столбцы-строки, слои-столбцы транспонирования,
обертка с последующим подарком)⍣6
применяется шесть разДругими словами, мы добавляем слой-обертку на вершину массива, затем деформируем его так, чтобы следующая сторона поворачивалась в положение верхнего слоя, готового к следующему раунду обертывания. Это повторяется шесть раз, при этом окончательная деформация перемещает все оси в исходный порядок.
Попробуй APL онлайн!
источник
05AB1E ,
343331 байтПопробуйте онлайн! (строка) или попробуйте онлайн! (числовое)
источник
Рубин, 89 байт
Я когда-нибудь говорил тебе, что я здесь только для того, чтобы изучать рубин? :-)
источник