मौसमी को लपेटें


21

कार्य

एक आवरण तत्व और एक गैर-दांतेदार 3 डी सरणी को देखते हुए, ऊपर, नीचे और चारों ओर सरणी लपेटें। आपको वर्ण और संख्यात्मक डेटा दोनों को संभालना होगा, लेकिन आवरण और वर्तमान में समान डेटा प्रकार होगा।


चरित्र उदाहरण

चरित्र डेटा के लिए, आपको एकल वर्णों के 3D सरणियों या स्ट्रिंग्स के 2D सरणियों को संभालने के लिए चुना जा सकता है:

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 पंक्ति, 4-वर्ण स्ट्रिंग्स के 2 कॉलम सरणी

[["Your",
  "gift"],

 ["goes",
  "here"]]

और वर्ण ".", 4 पंक्ति, 6-वर्ण तार के 4 स्तंभ सरणी का उत्तर दें

[["......",
  "......",
  "......",
  "......"],

 ["......",
  ".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]]]

क्या हम मान सकते हैं कि लपेटने के लिए प्रत्येक "उपहार तत्व" की लंबाई समान है?
XavCo7

@ XavCo7 हाँ आप कर सकते हैं।
Adám


किस तरह का आउटपुट स्वीकार्य है। आवश्यकता है कि यह तीन डी सरणी का एक डीस्टेस्ट्रक्चर हो या पाठ्य सामग्री के लिए स्वीकार्य हो
रोहन झुनझुनवाला

@ रोहन झुनझुनवाला आप स्वतंत्र रूप से प्रतिनिधित्व चुन सकते हैं, लेकिन इनपुट और आउटपुट प्रारूप समान होने चाहिए।
आदम डे

जवाबों:


8

जे , 16 15 बाइट्स

[h"2[h"1 h=.,,[

यह एक अनाम क्रिया है। इसे ऑनलाइन आज़माएं!

1 बाइट के लिए Adám को धन्यवाद!

व्याख्या

[h"2[h"1 h=.,,[  Wrapper is x, present is y.
            ,    Prepend x to y
             ,   then append
              [  x.
                 This gives x y x, and the wrapper automatically spreads to form 2D slices.
         h=.     Save the above operation (not its result) to h.
    [h"1         Apply h to x and every 2D slice of the previous result.
[h"2             Apply h to x and every 1D slice of the result of that.

क्या आप एक बाइट नहीं बचा सकते हैंh=.,,[
Adám

4

जावास्क्रिप्ट (ईएस 6), 97 बाइट्स

(a,e)=>[c=[,,...b=a[0]].fill(d=[,,...b[0]].fill(e)),...a.map(a=>[d,...a.map(a=>[e,...a,e]),d]),c]

जहां aत्रि-आयामी सरणी है और eआवरण है। स्वचालित रूप से तार के द्वि-आयामी सरणी को तीन-आयामी वर्णों में कनवर्ट करता है। जब aतार का द्वि-आयामी सरणी होता है और eएक वर्ण होता है और आप स्ट्रिंग के द्वि-आयामी सरणी को वापस करना चाहते हैं , तो इसके लिए वैकल्पिक संस्करण :

(a,e)=>[c=[,,...a[0]].fill(d=e.repeat(a[0][0].length+2)),...a.map(b=>[c,...b.map(s=>e+s+e),d]),c]

ऐसा लगता है कि यह संख्यात्मक पर विफल है e
आदम डे

@ Adám आह, क्षमा करें, मुझे प्रश्न गलत समझ सकता है।
नील

@ Adám नया संस्करण, सौभाग्य से एक ही बाइट काउंट है, जो मनमाने ढंग से तत्वों के त्रि-आयामी सरणियों पर काम करता है (चरित्र सरणियों के लिए ऑटोवर्ट स्ट्रिंग्स होगा)।
नील

3

ऑक्टेव, 23 27 बाइट्स

@(a,p)padarray(a,[1 1 1],p)

सरणी a
:p

इसे इस प्रकार कहा जा सकता है:

(@(a,p)padarray(a,[1 1 1],p))([1 2;3 4],40)

कोशिश (पेस्ट!) यह ऑक्टेव ऑनलाइन पर

नोट: पिछला उत्तर मान लिया गया है कि डिफ़ॉल्ट पैडल है


ऐसा लगता है कि यह केवल एक तर्क (सरणी) को स्वीकार करता है। इसे रैपिंग कैरेक्टर / नंबर कहां से मिलता है?
SMLS

डिफ़ॉल्ट रूप से फ़ंक्शन पैड 0 से
rahnema1

@ rahnema1 तो क्या अगर पैडिंग 42 है, या "Z"?
आदम डे

ओह ... PADVAL
rahnema1

1
+1 मुझे आश्चर्य है कि वास्तव में इसके लिए बिल्ट-इन है।
आदम डे

3

पायथन, 106 104 126 बाइट्स

def w(g,c):x=len(g[0][0])+2;k=[[c*x]*(len(g[0])+2)];return k+[[c*x,*[c+"".join(str(k)for k in j)+c for j in i],c*x]for i in g]+k

के रूप में पुकारा गया w(gift, wrapping character)। स्ट्रिंग और सरणी संकेतन का उपयोग कर सकते हैं। इसे ऑनलाइन आज़माएं!


मैं यह पता लगाने के लिए नहीं कर सकता कि इस पर कैसे चलें। क्या आप एक लिंक बना सकते हैं?
21


धन्यवाद। ऐसा लगता है कि संख्यात्मक फेल है।
अदम डेस

@ Adám गोत्चा, मैंने विनिर्देशन को गलत बताया। अब थोड़ा लंबा है, लेकिन यह वास्तव में सही ढंग से काम करता है> repl.it/Eu4M/4
TIDB

वाह, अब आप ऐनक से परे चले गए, आपको मिश्रित डेटा प्रकार के मामले को संभालने की आवश्यकता नहीं थी।
21

3

पर्ल 6, 86 बाइट्स

->\a,\w{my @z=[[w xx a[0;0]+2]xx a[0]+2]xx a+2;@z[1..a;1..a[0];1..a[0;0]]=a[*;*;*];@z}

एक लंबोदर जो 3 डी ऐरे और रैपिंग कैरेक्टर को तर्क के रूप में लेता है।

  • यह पहली बार सही आकार का 3D आउटपुट एरे बनाता है, जो रैपिंग कैरेक्टर से भरा होता है।
  • तब यह मूल सरणी के मानों को नए सरणी के सही स्लॉट में मूल सरणी के मानों को गिराने के लिए उपयोग करता है।

3

डायलॉग एपीएल , 31 19 13 12 बाइट्स

@ ज़र्बब के समाधान का लगभग एक लिप्यंतरण (31 बाइट्स) ।

एक अनाम फ़ंक्शन। वाम तर्क लपेट रहा है, सही तर्क उपहार है।

h1h2(h←⍪⍪⊣)

⊣h⍤1 h , अनाम फ़ंक्शन के बाएँ तर्क के साथ, के कॉलम में लागू किया गया

⊣h⍤2 एच ने अनाम फ़ंक्शन के बाएं तर्क के साथ, की पंक्तियों में लागू किया

h← h प्रमुख कोशिकाओं पर लागू होता है अर्थात अनाम फ़ंक्शन के तर्कों की परतें, जहाँ h होती है

बाएं तर्क को सही तर्क के लिए तैयार किया गया था

करने के लिए तैयार है

बाएं तर्क

दूसरे शब्दों में, h एक ऐसा कार्य है जो अपने बाएं तर्क (आवरण) के साथ अपने दाहिने तर्क (उपहार) को घेरता है। h को फिर उपहार की परतों पर लागू किया जाता है, फिर उस की पंक्तियों और अंत में उस के स्तंभों पर।

TryAPL ऑनलाइन!


यह डायलाग एपीएल संस्करण 16.0 समाधान (19 बाइट्स - @ शिष्टाचार के सौजन्य से ) किसी भी आयाम को संभालता है:

{⍵@(1+⍳⍴⍵)⊢⍺⍴⍨2+⍴⍵}

उपहार

@( पर रखा गया

1+ एक प्लस

के सभी सूचकांक

⍴⍵ उपहार का आकार

)⊢ सरणी में से मिलकर

⍺⍴⍨ रैपर आकार को आकार देता है

2+ दो को जोड़ा

⍴⍵ उपहार का आकार

दूसरे शब्दों में, हम रैपर तत्वों से पूरी तरह से एक सरणी बनाते हैं, जो हर आयाम में उपहार से दो तत्व बड़ा होता है, फिर हम उपहार को उस सरणी में रखते हैं (इस प्रकार उन स्थितियों में लपेटने वाले तत्वों की जगह) एक से एक ऑफसेट पर। किनारों, यानी केंद्र में।


मेरा अपना आविष्कार ( @ धन्यवाद के लिए -1 ):

(⌽2 3 1⍉,)⍣6

यह एक अनाम फ़ंक्शन-ट्रेन 6 बार लागू होता है, प्रत्येक बार आवरण के साथ बाएं तर्क के रूप में, और सही तर्क के रूप में पिछले आवेदन का परिणाम (हालांकि इसके चारों ओर पहली बार अनमॉडिफाइड उपहार होगा):

( एक अनाम फ़ंक्शन-ट्रेन

के रिवर्स कॉलम

2 3 1⍉ पंक्तियों-से-परतों, स्तंभ-से-पंक्तियों, परतों-से-स्तंभों के हस्तांतरण

, उपहार के बाद रैपर

)⍣6 छह बार आवेदन किया

दूसरे शब्दों में, हम सरणी के शीर्ष पर आवरण की एक परत जोड़ते हैं, फिर इसे ताना ताकि अगला पक्ष शीर्ष परत की स्थिति में घुमाया जाए, लपेटने के एक और दौर के लिए तैयार हो। यह छह बार दोहराया जाता है, अंतिम वारपंजिंग के साथ सभी कुल्हाड़ियों को मूल क्रम में बदल दिया जाता है।

TryAPL ऑनलाइन!



1

रूबी, 89 बाइट्स

->a,b{(w=[[z=b*2+a[0][0].tr('^|',b)]*(2+a[0].size)])+a.map{|x|[z]+x.map{|y|b+y+b}+[z]}+w}

क्या मैंने कभी तुमसे कहा है कि मैं केवल रूबी सीखने के लिए यहाँ हूँ? :-)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.