Tâche
Étant donné un élément wrapper et un tableau 3D non dentelé, enveloppez le tableau en haut, en bas et tout autour. Vous devez gérer à la fois les données de caractères et les données numériques, mais l'encapsuleur et le présent auront le même type de données.
Exemple de personnage
Pour les données de caractères, vous pouvez choisir de gérer des tableaux 3D de caractères uniques ou des tableaux 2D de chaînes:
Étant donné le tableau de caractères à 2 couches, 2 lignes et 4 colonnes
[[["Y","o","u","r"],
["g","i","f","t"]],
[["g","o","e","s"],
["h","e","r","e"]]]
et le caractère "."
, répondez au tableau de caractères à 4 couches, 4 lignes et 6 colonnes
[[[".",".",".",".",".","."],
[".",".",".",".",".","."],
[".",".",".",".",".","."],
[".",".",".",".",".","."]],
[[".",".",".",".",".","."],
[".","Y","o","u","r","."],
[".","g","i","f","t","."],
[".",".",".",".",".","."]],
[[".",".",".",".",".","."],
[".","g","o","e","s","."],
[".","h","e","r","e","."],
[".",".",".",".",".","."]],
[[".",".",".",".",".","."],
[".",".",".",".",".","."],
[".",".",".",".",".","."],
[".",".",".",".",".","."]]]
ou étant donné le tableau de 2 lignes et 2 colonnes de chaînes de 4 caractères
[["Your",
"gift"],
["goes",
"here"]]
et le caractère "."
, répondez au tableau de 4 lignes et 4 colonnes de chaînes de 6 caractères
[["......",
"......",
"......",
"......"],
["......",
".Your.",
".gift.",
"......"],
["......",
".goes.",
".here.",
"......"],
["......",
"......",
"......",
"......"]]
Exemple numérique
Étant donné le tableau numérique à 2 couches, 2 lignes et 2 colonnes
[[[1,2],
[3,4]],
[[5,6],
[7,8]]]`
et le nombre 0
, répondez au tableau numérique à 4 couches, 4 lignes et 4 colonnes
[[[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]]]
Réponses:
J ,
1615 octetsCeci est un verbe anonyme. Essayez-le en ligne!
Merci à Adám pour 1 octet!
Explication
la source
h=.,,[
JavaScript (ES6), 97 octets
Où
a
est le tableau tridimensionnel ete
le wrapper. Convertit automatiquement un tableau de chaînes bidimensionnel en un tableau de caractères tridimensionnel. Version alternative pour quanda
est un tableau de chaînes à deux dimensions ete
est un caractère et que vous souhaitez renvoyer un tableau de chaînes à deux dimensions:la source
e
.Octave,
2327 octetstableau:
a
padval:
p
Il peut être appelé comme:
essayez (collez!) sur Octave Online
note: réponse précédente supposée padval par défaut
la source
Python,
106104126 octetsAppelé comme
w(gift, wrapping character)
. Peut utiliser la chaîne et la notation du tableau. Essayez-le en ligne!la source
Perl 6, 86 octets
Un lambda qui prend le tableau 3D et le caractère d'habillage comme arguments.
la source
Dyalog APL ,
31191312 octetsPresque une translittération (31 octets) de la solution de @ Zgarb .
Une fonction anonyme. L'argument de gauche est enveloppant, l'argument de droite est cadeau.
⊣h⍤1
h appliqué, avec l'argument gauche de la fonction anonyme, aux colonnes de⊣h⍤2
h appliqué, avec l'argument gauche de la fonction anonyme, aux lignes deh←
h appliqué aux cellules principales, c'est-à-dire aux couches des arguments de la fonction anonyme, où h est⍪
l'argument de gauche ajouté à l'argument de droite⍪
ajouté à⊣
l'argument de gaucheEn d'autres termes, h est une fonction qui entoure son argument droit (le cadeau) avec son argument gauche (le wrapper). h est ensuite appliqué aux couches du cadeau, puis aux lignes de cela et enfin aux colonnes de cela.
TryAPL en ligne!
Cette solution Dyalog APL version 16.0 (19 octets - gracieuseté de @ngn ) gère un nombre illimité de dimensions:
⍵
le cadeau@(
placé à1+
un plus⍳
tous les indices de⍴⍵
la forme du cadeau)⊢
dans le tableau composé de⍺⍴⍨
le wrapper remodelé à la forme2+
deux ajoutés à⍴⍵
la forme du cadeauEn d'autres termes, nous créons un tableau entièrement composé d'éléments d'emballage, qui dans chaque dimension est deux éléments plus grands que le cadeau, puis nous plaçons le cadeau dans ce tableau (remplaçant ainsi les éléments d'emballage dans ces positions) à un décalage de un par rapport au bords, c'est à dire au centre.
Ma propre invention (-1 grâce à @ngn ):
Cela applique un train de fonctions anonyme 6 fois, chaque fois avec le wrapper comme argument de gauche, et le résultat de l'application précédente comme argument de droite (bien que la première fois, ce sera le cadeau non modifié):
(
un train de fonctions anonyme⌽
colonnes inversées de2 3 1⍉
la transposition lignes à couches, colonnes à lignes, couches à colonnes de,
l'emballage suivi du cadeau)⍣6
appliqué six foisEn d'autres termes, nous ajoutons une couche d'enveloppe sur le haut de la matrice, puis la déformons de sorte que le côté suivant soit tourné dans la position de couche supérieure, prêt pour un autre cycle d'emballage. Cette opération est répétée six fois, la déformation finale repositionnant tous les axes dans l'ordre d'origine.
TryAPL en ligne!
la source
05AB1E ,
343331 octetsEssayez-le en ligne! (chaîne) ou Essayez-le en ligne! (numérique)
la source
Rubis, 89 octets
Vous ai-je déjà dit que je ne suis ici que pour apprendre le rubis? :-)
la source