Aufgabe
Bei einem Wrapper-Element und einem nicht gezackten 3D-Array müssen Sie das Array oben, unten und ringsum umschließen. Sie müssen sowohl mit Zeichen als auch mit numerischen Daten umgehen, aber der Wrapper und das Present haben denselben Datentyp.
Zeichen Beispiel
Für Zeichendaten können Sie entweder 3D-Arrays aus einzelnen Zeichen oder 2D-Arrays aus Zeichenfolgen auswählen:
Angesichts des Zeichenarrays mit 2 Ebenen, 2 Zeilen und 4 Spalten
[[["Y","o","u","r"],
["g","i","f","t"]],
[["g","o","e","s"],
["h","e","r","e"]]]
"."
Beantworten Sie für das Zeichen das 4-Ebenen-, 4-Zeilen- und 6-Spalten-Zeichen-Array
[[[".",".",".",".",".","."],
[".",".",".",".",".","."],
[".",".",".",".",".","."],
[".",".",".",".",".","."]],
[[".",".",".",".",".","."],
[".","Y","o","u","r","."],
[".","g","i","f","t","."],
[".",".",".",".",".","."]],
[[".",".",".",".",".","."],
[".","g","o","e","s","."],
[".","h","e","r","e","."],
[".",".",".",".",".","."]],
[[".",".",".",".",".","."],
[".",".",".",".",".","."],
[".",".",".",".",".","."],
[".",".",".",".",".","."]]]
oder mit dem Array aus 2 Zeilen und 2 Spalten mit 4 Zeichen
[["Your",
"gift"],
["goes",
"here"]]
"."
Beantworten Sie für das Zeichen das 4-Zeilen- und 4-Spalten-Array mit 6-Zeichen-Zeichenfolgen
[["......",
"......",
"......",
"......"],
["......",
".Your.",
".gift.",
"......"],
["......",
".goes.",
".here.",
"......"],
["......",
"......",
"......",
"......"]]
Numerisches Beispiel
Angesichts des numerischen Arrays mit 2 Ebenen, 2 Zeilen und 2 Spalten
[[[1,2],
[3,4]],
[[5,6],
[7,8]]]`
und die Zahl 0
, beantworten Sie das numerische Array mit 4 Ebenen, 4 Zeilen und 4 Spalten
[[[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]]]
Antworten:
J ,
16-15BytesDies ist ein anonymes Verb. Probieren Sie es online!
Danke an Adám für 1 Byte!
Erläuterung
quelle
h=.,,[
JavaScript (ES6), 97 Byte
Wo
a
ist das dreidimensionale Array unde
ist der Wrapper. Konvertiert automatisch ein zweidimensionales Array von Zeichenfolgen in ein dreidimensionales Array von Zeichen. Alternative Version für whena
ist ein zweidimensionales Array von Zeichenfolgen unde
ist ein Zeichen und Sie möchten ein zweidimensionales Array von Zeichenfolgen zurückgeben:quelle
e
.Oktave,
2327 Bytesarray:
a
padval:
p
Es kann genannt werden als:
versuchen Sie es auf Octave Online (Einfügen!)
Hinweis: Bei der vorherigen Antwort wurde die Standardeinstellung padval angenommen
quelle
Python,
106104126 BytesGenannt als
w(gift, wrapping character)
. Kann die Zeichenfolge und die Array-Notation verwenden. Probieren Sie es online!quelle
Perl 6, 86 Bytes
Ein Lambda, das das 3D-Array und das Umhüllungszeichen als Argumente verwendet.
quelle
Dyalog APL ,
31191312 BytesFast eine Transliteration (31 Byte) von @ Zgarbs Lösung .
Eine anonyme Funktion. Das linke Argument wird umbrochen, das rechte Argument ist ein Geschenk.
⊣h⍤1
h wird mit dem linken Argument der anonymen Funktion auf die Spalten von angewendet⊣h⍤2
h wird mit dem linken Argument der anonymen Funktion auf die Zeilen von angewendeth←
h wird auf die Hauptzellen angewendet, dh auf die Ebenen der Argumente der anonymen Funktion, wobei h ist⍪
das linke Argument steht vor dem rechten Argument⍪
vorangestellt⊣
das linke ArgumentMit anderen Worten, h ist eine Funktion, die ihr rechtes Argument (das Geschenk) mit ihrem linken Argument (der Hülle) umgibt. h wird dann auf die Ebenen des Geschenks angewendet, dann auf die Zeilen davon und schließlich auf die Spalten davon.
TryAPL online!
Diese Dyalog APL Version 16.0-Lösung (19 Byte - mit freundlicher Genehmigung von @ngn ) verarbeitet eine beliebige Anzahl von Dimensionen:
⍵
das Geschenk@(
platziert bei1+
eins plus⍳
Alle Indizes von⍴⍵
die Form des Geschenks)⊢
im Array bestehend aus⍺⍴⍨
Die Hülle nahm die Form an2+
zwei hinzugefügt⍴⍵
die Form des GeschenksMit anderen Worten, wir erstellen ein Array vollständig aus Wrapper-Elementen, die in jeder Dimension zwei Elemente größer sind als das Geschenk. Anschließend platzieren wir das Geschenk in diesem Array und ersetzen die Wrapper-Elemente in diesen Positionen Kanten, dh in der Mitte.
Meine eigene Erfindung (-1 dank @ngn ):
Dies wendet einen anonymen Funktionszug sechsmal an, jedes Mal mit dem Wrapper als linkem Argument und dem Ergebnis der vorherigen Anwendung als rechtem Argument (obwohl es sich beim ersten Mal um das unveränderte Geschenk handelt):
(
ein anonymer Funktionszug⌽
umgekehrte Spalten von2 3 1⍉
die Zeilen-zu-Ebenen-, Spalten-zu-Zeilen-, Ebenen-zu-Spalten-Transposition von,
der Umschlag, gefolgt von dem Geschenk)⍣6
sechsmal angewendetMit anderen Worten, wir fügen eine Wrapper-Schicht oben auf dem Array hinzu und verziehen sie dann, sodass die nächste Seite in die oberste Layer-Position gedreht wird und für eine weitere Wrapper-Runde bereit ist. Dies wird sechsmal wiederholt, wobei das endgültige Verziehen alle Achsen in die ursprüngliche Reihenfolge versetzt.
TryAPL online!
quelle
05AB1E ,
343331 BytesProbieren Sie es online! (String) oder Online ausprobieren! (numerisch)
quelle
Ruby, 89 Bytes
Habe ich dir jemals gesagt, dass ich nur hier bin, um Rubin zu lernen? :-)
quelle