चुनौती चुनौती 4: वर्तमान विधानसभा लाइन!


12

<< पिछला अगला >>

सांता रात भर चुराए गए सभी उपहारों का फिर से निर्माण करने में सक्षम था! अब उन्हें पैकेजिंग के लिए उन्हें विधानसभा लाइन में भेजना होगा। उनके पास आमतौर पर असेंबली लाइन की देखरेख करने के लिए एक कैमरा होता है, दोनों यह सुनिश्चित करने के लिए कि कल्पित बौने अच्छा काम कर रहे हैं और क्योंकि असेंबली लाइन की तस्वीरें विज्ञापन पोस्टर पर अच्छी लगती हैं [उद्धरण वांछित]

दुर्भाग्य से, उसका कैमरा टूट गया, इसलिए वह आपको पसंद करेगा कि विधानसभा लाइन कैसी दिखेगी!

अधिकतम दक्षता पर काम करने वाले असेंबली लाइन को रखने और त्रुटि या विफलता के जोखिम को कम करने के लिए, सभी उपस्थित बक्से में एक ही चौड़ाई होती है ताकि वे कन्वेयर बेल्ट पर पूरी तरह से फिट हो सकें।

चुनौती

उनके आयामों द्वारा प्रस्तुत किए गए प्रस्तुत की एक सूची को देखते हुए, सभी के साथ एक कन्वेयर बेल्ट आउटपुट।

एक वर्तमान इस तरह तैयार किया गया है:

  +----+
 /    /|
+----+ |
|    | +
|    |/
+----+

इस वर्तमान में चौड़ाई 1, ऊंचाई 2, और लंबाई 4 है। ध्यान दें कि प्लस-संकेत साइड-लंबाई के लिए नहीं गिना जाता है, इसलिए लंबाई 4 के साथ एक वर्तमान में 6 स्थान हैं।

निकटतम दो पात्रों के बीच एक स्थान के साथ सभी प्रस्तुतियां एक दूसरे के बगल में खींची जाती हैं; अर्थात्, प्रस्तुत के निचले-बाएँ कोने को ऐसे फैलाया जाता है कि यदि किसी वर्तमान बॉक्स की लंबाई lऔर चौड़ाई है w, तो अगला वर्तमान बॉक्स का निचला-बाएँ कोने पिछले बॉक्स के निचले-बाएँ कोने के l + w + 4दाईं ओर स्थित होगा ।

सभी उपस्थित बक्सों को खींचे जाने के बाद, कन्वेयर बेल्ट को width + 2अंडरस्कोर के साथ आखिरी लाइनों में से प्रत्येक पर बक्सों के बीच के स्थान को बदलकर खींचा जाता है ।

साथ मौजूद बक्से के लिए अंतिम आउटपुट (l, w, h)का [(4, 1, 2), (8, 1, 3), (1, 1, 1)]होगा:

           +--------+
  +----+  /        /|
 /    /| +--------+ |   +-+
+----+ | |        | |  / /|
|    | +_|        | +_+-+ +
|    |/__|        |/__| |/
+----+___+--------+___+-+

स्वरूपण विनिर्देशों

आप 3-टुपल्स की एक सूची लेने के लिए या तो चुन सकते हैं जहां तत्वों में से एक पूरी सूची में सुसंगत है (जो चौड़ाई होगी), या आप वर्तमान चौड़ाई ले सकते हैं और फिर 2-ट्यूपल्स की एक सूची लंबाई और प्रत्येक वर्तमान की ऊंचाई। आप किसी भी क्रम में और किसी भी उचित प्रारूप में इनपुट ले सकते हैं, लेकिन प्रस्तुत उसी क्रम में प्रदर्शित किया जाना चाहिए जो उन्हें इनपुट के रूप में दिया जाता है।

आप एएससीआईआई-कला के लिए कोई भी उचित आउटपुट प्रारूप चुन सकते हैं (एक फ़ंक्शन से वापस लौटना सहित)।

परीक्षण के मामलों

ये परीक्षण मामले [(l, w, h), ...]प्रारूप के रूप में दिए गए हैं ।

[(4, 1, 2), (8, 1, 3), (1, 1, 1)]:

           +--------+
  +----+  /        /|
 /    /| +--------+ |   +-+
+----+ | |        | |  / /|
|    | +_|        | +_+-+ +
|    |/__|        |/__| |/
+----+___+--------+___+-+

[(5, 3, 4), (8, 3, 1), (1, 3, 7)]:

                               +-+
                              / /|
                             / / |
    +-----+                 / /  |
   /     /|                +-+   |
  /     / |                | |   |
 /     /  |     +--------+ | |   |
+-----+   |    /        /| | |   |
|     |   +___/        / +_| |   +
|     |  /___/        / /__| |  /
|     | /___+--------+ /___| | /
|     |/____|        |/____| |/
+-----+_____+--------+_____+-+

[(0, 0, 0)] (this is the most interesting test case ever :P)

 ++
+++
++

[(8, 3, 0), (0, 3, 8)] (more zero cases)

                   ++
                  //|
                 // |
                //  |
               ++   |
               ||   |
               ||   |
               ||   |
    +--------+ ||   |
   /        /+_||   +
  /        //__||  /
 /        //___|| /
+--------+/____||/
+--------+_____++

नियम

  • स्टैंडर्ड लोफॉल्स लागू होते हैं
  • यह , इसलिए बाइट्स में सबसे कम उत्तर जीतता है
  • कोई उत्तर स्वीकार नहीं किया जाएगा

नोट: मैंने इस चुनौती श्रंखला के लिए Advent of Code से प्रेरणा ली । मेरा इस साइट से कोई जुड़ाव नहीं है

आप यहां पहली चुनौती के 'लिंक्ड' सेक्शन को देखकर श्रृंखला की सभी चुनौतियों की सूची देख सकते हैं ।


@AdmBorkBork सभी उपस्थित बक्सों की चौड़ाई समान है
एरिक आउटगोल्फर

1
अगर चारकोल इसे बर्बाद नहीं करता है , तो मुझे नहीं पता कि क्या होगा।
16

@totallyhuman वास्तव में, brainf ** k इस चुनौती को जीतेगा: P
HyperNeutrino

क्या आप इन सभी प्रश्नों को अनुक्रमित करने के लिए मेटा पर एक पोस्ट कर सकते हैं?
20

@RamenChef Hm अच्छा विचार है। मैं ऐसा कर सकता हूं: P
HyperNeutrino

जवाबों:


4

चारकोल , 96 81 बाइट्स

NθWS«→FυG↗→↙⁺²θ_≔I⪪ι υ≔⊟υπ≔§υ⁰ρ→↗G↑⊕π↗⊕θ→⊕ρ↓⊕π↙⊕θ ↑πP↗⊕θP←⊕ρ↓+↓πF²«↷⁴+ρ↷²+π↷¹+θ↶³

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। पहली पंक्ति पर इनपुट चौड़ाई है, फिर निम्न पंक्तियों पर अन्य आयाम, एक रिक्त रेखा के साथ समाप्त होते हैं। स्पष्टीकरण:

Nθ

चौड़ाई इनपुट करें।

WS«

शेष रेखाओं पर लूप करें जब तक कि रिक्त रेखा नहीं पहुंच जाती।

→FυG↗→↙⁺²θ_

प्रस्तुत के बीच बेल्ट ड्रा। uचर, एक खाली सूची है, जो इसलिए पहले पास पर कुछ नहीं करता है के लिए पूर्वनिर्धारित पर बाद में, जबकि यह एक भी तत्व के साथ समाप्त होता है, एक बार चलाने के लिए इस कोड उत्पन्न कर रहा है। (का उपयोग करना ifकम गोल्फ होगा।)

≔I⪪ι υ

अंतरिक्ष में आयामों को विभाजित करें, उन्हें पूर्णांक पर ले जाएं, और उन्हें सहेजें u

≔⊟υπ

अंतिम आयाम निकालें और इसे सहेजें p

≔§υ⁰ρ

पहले आयाम को कॉपी करें r, लेकिन इसे छोड़ दें uताकि बेल्ट अगले लूप पर आ जाए।

→↗G↑⊕π↗⊕θ→⊕ρ↓⊕π↙⊕θ 

बेल्ट के ओवरलैप होने की स्थिति में, वर्तमान के इंटीरियर को मिटा दें।

↑πP↗⊕θP←⊕ρ↓+↓π

वर्तमान की आंतरिक रेखाएँ खींचें।

F²«↷⁴+ρ↷²+π↷¹+θ↶³

वर्तमान के बाहरी हिस्से के चारों ओर आधे रास्ते बनाएं, फिर दूसरे आधे हिस्से के लिए दोहराएं।


1

पिप , 160 154 बाइट्स

-lध्वज के लिए कोड के 153 बाइट, +1 ।

{YMX:_+B+3MUaRV$.({UwhlWg+^11{a<=h+w?J[sXa-haN[0hh+w]?'-XlWR'+sXlWR("/|"a<h)RV(("+|/"aCMw).sXw)@<MN[ah+w-awh]'_Xw-a+1|s]sXl+w+3}M,y}MUa)R`_ +`'_X#_<|:'_}

यह एक ऐसा फंक्शन है जिसमें सूचियों की एक सूची होती है [width height length]इसे ऑनलाइन आज़माएं!

कैसे?

शीर्ष-स्तरीय स्पष्टीकरण:

  • एक फ़ंक्शन को परिभाषित करें जो एक बॉक्स का प्रतिनिधित्व करने वाली लाइनों की सूची देता है
  • दिए गए आयामों की प्रत्येक सूची में फ़ंक्शन को मैप करें
  • आइटम-वार लाइनों की परिणामी सूचियों को सम्‍मिलित करें
  • ठीक से व्यवहार करने के लिए अंडरस्कोर प्राप्त करने के लिए रेगेक्स प्रतिस्थापन के साथ थोड़ा पोस्ट-प्रोसेसिंग करें

एक टिप्पणी छोड़ दो और मैं एक अधिक विस्तृत विवरण जोड़ूंगा।


0

पायथन 2 , 508 बाइट्स

def f(B):
 d=B[0][1]+2;H=max(B)[0]+d+1;W=sum(sum(b[1:])+3for b in B)+len(B);r=[[' ']*i+W*['_']for i in range(d)]+[W*[' ']for _ in' '*H];o=0
 for h,w,l in B:
	for i in range(w+2,1,-1):r[i-1][o+i-2:o+l+i]=[' ']*(l+2)+['/'];r[h+i][o+i-1]=r[h+i][o+l+i]='/'
	r[0][o:o+l+2]=r[h+1][o:o+l+2]=r[w+h+2][o+w+1:o+w+l+3]=['+']+['-']*l+['+']
	for i in range(1,h+1):m=min(i,w)-1;r[i][o:o+l+2+m]=['|']+[' ']*l+['|']+[' ']*m;r[i+w+1][o+l+w+2]='|'
	r[w+1][o+l+w+2]='+';o+=l+w+4
 for l in r[H-1::-1]:print''.join(l).rstrip('_')

इसे ऑनलाइन आज़माएं!

की सूचियों की सूची लेता है [height, width, length]

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