PowerShell v2 +, 217 205 190 187 184 बाइट्स
param($b)"_"*(($a=[math]::Abs($b))*4);$z,$y='/\'[($b=$b-lt0),!$b]
((($x=1..$a|%{($w=" "*($_-1))+$z+" "*(2*($a-$_))+$y+(' ','_')[$_-eq$a]*($a*2-1)+$y+$w})|%{-join$_[($a*4)..0]}),$x)[$b]
$bएक पूर्णांक के रूप में इनपुट लेता है । ध्यान दें कि यदि $bऋणात्मक है, तो आपको इसे उचित तरीके से (उदाहरण देखें) कास्ट करने के लिए इसे स्पष्ट रूप से पार्स के साथ घेरने की आवश्यकता है, अन्यथा PowerShell को लगता है कि यह एक स्ट्रिंग है।
चाहे जिस दिशा में तम्बू का सामना करना पड़ रहा हो, पहली पंक्ति समान होती है, अंडरस्कोर का एक गुच्छा; वास्तव में 4*abs(input)उनमें से कई, वास्तव में। उस नंबर को $aबाद में उपयोग के लिए भी संग्रहीत किया जाता है । साथ ही, अब हम का निरपेक्ष मान है कि $bमें संग्रहीत $aहै, हम बारी $bअपने हस्ताक्षर के लिए एक बूलियन में, और हमारे स्लैश में संग्रहीत चुनें $yऔर $z।
अगली पंक्ति आउटपुट का निर्माण और निर्माण कर रही है, और यह एक डोज़ी है, इसलिए इसे नीचे तोड़ दें।
हम अनिवार्य रूप से दो तत्वों की एक सरणी में अनुक्रमण कर रहे हैं, (big long calculations saved into $x)या $x, के आधार पर $b।
गणनाएं हैं जहां तम्बू शरीर का निर्माण किया जाता है। हम पाश से 1..$a|%{...}। प्रत्येक पुनरावृत्ति हम तम्बू शरीर की एक पंक्ति का निर्माण कर रहे हैं। हम पंक्ति # के बराबर कई स्थानों से शुरू करते हैं -1, ताकि हम उचित रूप से बाएं-संरेखित हों। इसे $wबाद में के लिए संग्रहीत किया जाता है, और उपयुक्त स्लैश ($ z, के आधार पर $b) के साथ, तब रिक्त स्थान की डोरफ्रेम संख्या, फिर दूसरे स्लैश $y, या तो अंडरस्कोर या रिक्त स्थान पर निर्भर करता है कि हम नीचे की रेखा पर हैं या नहीं। फिर एक और स्लैश $y, और अंत में $wआयताकार स्ट्रिंग के निर्माण के लिए अनुगामी रिक्त स्थान ( ) की उपयुक्त संख्या । जिसके परिणामस्वरूप स्ट्रिंग को सरणी में संग्रहीत किया जाता है $x।
सरणी के बाईं आधा चुना जाता है (यानी, $bहै False, तो हम के माध्यम से लूप करने की आवश्यकता है के बाद से इनपुट सकारात्मक था) $xऔर प्रत्येक लाइन आइटम रिवर्स - इस जगह है जहाँ अवांछित स्पेस भूमिका निभाते हैं; यह हमें दूरियों की पुन: गणना करने के बजाए लाइनों को उलटने की अनुमति देता है।
यदि $bहै True, तो $xइसके बजाय सरणी का दायां भाग चुना जाता है।
या तो मामले में, पाइपलाइन में अब एक सरणी होती है। Write-Outputतत्वों के बीच डिफ़ॉल्ट न्यूलाइन के साथ, कार्यक्रम के पूरा होने पर निहित उत्पादन होता है।
उदाहरण
PS C:\Tools\Scripts\golfing> .\print-upside-down-tent.ps1 (-5)
____________________
\ / /
\ / /
\ / /
\ / /
\/_________/
PS C:\Tools\Scripts\golfing> .\print-upside-down-tent.ps1 (4)
________________
\ \ /
\ \ /
\ \ /
\_______\/
3उदाहरण के लिए इनपुट के लिए 12 लंबाई (एक आयत) के चार तारों का उत्पादन कर सकते हैं ?