PowerShell v3 +, 55 बाइट्स
param($a,$b)1..$b|%{"|$((' ','-')[$_-in1,$b]*($a-2))|"}
इनपुट लेता है $aऔर $b। से लूप्स 1के लिए $b। प्रत्येक पुनरावृत्ति, हम एक स्ट्रिंग का निर्माण करते हैं। मध्य को दो एकल-लंबाई के तारों की एक सरणी से चुना जाता है, फिर स्ट्रिंग-गुणा से $a-2, जबकि यह पाइप से घिरा हुआ है। परिणामी स्ट्रिंग्स को पाइप लाइन पर छोड़ दिया जाता है, और अंतर्निहित के माध्यम से आउटपुट Write-Outputप्रोग्राम के पूरा होने पर होता है, डिफ़ॉल्ट न्यूलाइन सेपरेटर के साथ।
वैकल्पिक रूप से, 55 बाइट्स पर भी
param($a,$b)1..$b|%{"|$((''+' -'[$_-in1,$b])*($a-2))|"}
यह एक के बारे में आया था क्योंकि मैं इसके बजाय एक स्ट्रिंग का उपयोग करके बीच में सरणी चयन को गोल्फ के लिए कोशिश कर रहा था। हालाँकि, जब से [char]समय [int]को परिभाषित नहीं किया जाता है, हम बचत पर पराने के साथ एक स्ट्रिंग के रूप में डालने की आवश्यकता से चूक जाते हैं और ''+।
दोनों संस्करणों को -inऑपरेटर के लिए v3 या नए की आवश्यकता होती है ।
उदाहरण
PS C:\Tools\Scripts\golfing> .\draw-an-ascii-rectangle.ps1 10 3
|--------|
| |
|--------|
PS C:\Tools\Scripts\golfing> .\draw-an-ascii-rectangle.ps1 7 6
|-----|
| |
| |
| |
| |
|-----|
Ị:)