एक ASCII आयत बनाएँ


20

एक सरणी में इनपुट के रूप में दो पूर्णांकों को देखते हुए, एक पूर्णांक का उपयोग करें, पहला पूर्णांक चौड़ाई के रूप में और दूसरा ऊंचाई के रूप में।

या, यदि आपकी भाषा इसका समर्थन करती है, तो दो पूर्णांकों को अलग-अलग इनपुट के रूप में दिया जा सकता है।

मान लें कि चौड़ाई और ऊँचाई कभी 3 से कम नहीं होगी, और उन्हें हमेशा दिया जाएगा।

उदाहरण आउटपुट:

[३, ३]

|-|
| |
|-|

[५,,]

|---|
|   |
|   |
|   |
|   |
|   |
|   |
|---|

[१०, ३]

|--------|
|        |
|--------|

यह कोड-गोल्फ है, इसलिए बाइट्स की सबसे कम राशि के साथ जवाब जीतता है।

जवाबों:



10

जेली , 14 बाइट्स

,þ%,ỊḄị“-|| ”Y

इसे ऑनलाइन आज़माएं! या सभी परीक्षण मामलों को सत्यापित करें

यह काम किस प्रकार करता है

,þ%,ỊḄị“-|| ”Y  Main link. Left argument: w. Right argument: h

,þ              Pair table; yield a 2D array of all pairs [i, j] such that
                1 ≤ i ≤ w and 1 ≤ j ≤ h.
   ,            Pair; yield [w, h].
  %             Take the remainder of the element-wise division of each [i, j]
                by [w, h]. This replaces the highest coordinates with zeroes.
    Ị           Insignificant; map 0 and 1 to 1, all other coordinates to 0.
     Ḅ          Unbinary; convert each pair from base 2 to integer.
                  [0, 0] -> 0 (area)
                  [0, 1] -> 1 (top or bottom edge)
                  [1, 0] -> 2 (left or right edge)
                  [1, 1] -> 3 (vertex)
       “-|| ”   Yield that string. Indices are 1-based and modular in Jelly, so the
                indices of the characters in this string are 1, 2, 3, and 0.
      ị         At-index; replace the integers by the correspoding characters.
             Y  Join, separating by linefeeds.

यह एक अद्भुत प्रयोग है :)
लिन

9

मतलाब, 69 65 56 बाइट्स

धन्यवाद @WeeingIfFirst और कुछ बाइट्स के लिए @LuisMendo =)

function z=f(a,b);z(b,a)=' ';z([1,b],:)=45;z(:,[1,a])='|'

यह वास्तव में मैटलैब में सरल है: पहले वांछित आकार का एक मैट्रिक्स बनाएं, फिर सम्मिलित करने के लिए पहली और अंतिम पंक्ति को अनुक्रमणित करें -, और सम्मिलित करने के लिए पहले और अंतिम कॉलम के साथ ऐसा ही करें |

उदाहरण के लिए f(4,3)रिटर्न

|--|
|  |
|--|

@WeeingIfFirst ओह, निश्चित रूप से, बहुत-बहुत धन्यवाद!
दोष

6 बाइट्स कम:z([1,b],1:a)=45;z(1:b,[1,a])=124;z=[z,'']
स्टीवी ग्रिफ़िन

इससे भी कम:z(b,a)=' ';z([1,b],:)=45;z(:,[1,a])=124
लुइस मेंडो सेप

@LuisMendo धन्यवाद! हमें अभी भी स्ट्रिंग की सख्त आवश्यकता है, अन्यथा सरणी एक संख्यात्मक में बदल जाती है।
दोष

@flawr z(b,a)=' 'चार के रूप में आरंभ करता है। उसके बाद आप संख्याओं को भर सकते हैं और वे स्वचालित रूप से चार के लिए डाली जाती हैं। zअपने मूल प्रकार को बनाए रखता है
लुइस मेंडो सेप

8

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

f=
(w,h,g=c=>`|${c[0].repeat(w-2)}|
`)=>g`-`+g` `.repeat(h-2)+g`-`
;
<div oninput=o.textContent=f(w.value,h.value)><input id=w type=number min=3 value=3><input id=h type=number min=3 value=3><pre id=o>


एक डिफ़ॉल्ट फ़ंक्शन के रूप में टेम्पलेट फ़ंक्शन पास करना? चतुर!
फ्लोरी सेप

8

हास्केल, 62 55 बाइट्स

f[a,b]n=a:(b<$[3..n])++[a]
g i=unlines.f[f"|-"i,f"| "i]

उपयोग उदाहरण:

*Main> putStr $ g 10 3
|--------|
|        |
|--------|

सहायक समारोह fएक दो तत्व सूची लेता है [a,b]और एक नंबर nऔर एक की एक सूची देता है aके बाद n-2 bएक के बाद एस a। हम fतीन बार उपयोग कर सकते हैं : शीर्ष / निचला रेखा बनाने के लिए:, f "|-" iएक मध्य रेखा: f "| " iऔर उन दो से पूरी आयत: f [<top>,<middle>] j(नोट: आंशिक अनुप्रयोग के कारण jएक पैरामीटर के रूप में प्रकट नहीं होता है g i)।

संपादित करें: @dianne ने दो Charतर्कों को Stringलंबाई में से एक में जोड़कर कुछ बाइट्स को बचाया 2. बहुत बहुत धन्यवाद!


मुझे #विचार पसंद है!
15

2
मुझे लगता है कि आप कुछ बाइट्स को परिभाषित करके (a:b)#n=a:([3..n]>>b)++[a]और लिखकर बचा सकते हैं["|-"#i,"| "#i]#j
dianne

@ डियन: बहुत चालाक। आपका बहुत बहुत धन्यवाद!
निकमी

8

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

-3 बाइट्स @flornquake के लिए धन्यवाद (अनावश्यक कोष्ठक हटाएं; hकाउंटर के रूप में उपयोग करें )

def f(w,h):exec"print'|'+'- '[1<h<%d]*(w-2)+'|';h-=1;"%h*h

टेस्ट केस आइडियन पर होते हैं


('- '[1<i<h])कोष्ठक की जरूरत नहीं है।
flornquake

काउंटर के रूप में ज का उपयोग करके एक और बाइट सहेजें:exec"print'|'+'- '[1<h<%d]*(w-2)+'|';h-=1;"%h*h
flornquake

@flornquake मेरा मतलब उन कोष्ठकों की आवश्यकता की जांच करना था, लेकिन भूल गए। का उपयोग करते हुए hकाउंटर के रूप में स्मार्ट है! धन्यवाद।
जोनाथन एलन

8

PHP, 74 बाइट्स

for(;$i<$n=$argv[2];)echo str_pad("|",$argv[1]-1,"- "[$i++&&$n-$i])."|\n";

1
आप अभी भी भौतिक ब्यौरों के साथ एक बाइट जीत सकते हैं।
टाइटस १

1
!$i|$n==++$iइसके बजाय -2 बाइट्स!$i|$n-1==$i++
टाइटस

1
एक अन्य बाइट के साथ$i++&&$n-$i?" ":"-"
टाइटस

1
$i++&&$n-$i?" ":"-"-> "- "[$i++&&$n-$i](-2)
टाइटस

7

विम्सस्क्रिप्ट, 93 83 75 74 73 66 64 63 बाइट्स

कोड

fu A(...)
exe "norm ".a:1."i|\ehv0lr-YpPgvr dd".a:2."p2dd"
endf

उदाहरण

:call A(3,3)

व्याख्या

fun A(...)    " a function with unspecified params (a:1 and a:2)
exe           " exe(cute) command - to use the parameters we must concatenate :(
norm          " run in (norm) al mode
#i|           " insert # vertical bars
\e            " return (`\<Esc>`) to normal mode
hv0l          " move left, enter visual mode, go to the beginning of the line,  move right (selects inner `|`s)
r-            " (r)eplace the visual selection by `-`s
YpP           " (Y) ank the resulting line, and paste them twice
gv            " re-select the previous visual selection
r<Space>      " replace by spaces
dd            " Cut the line
#p            " Paste # times (all inner rows) 
2dd           " Remove extra lines

ध्यान दें कि यह उपयोग नहीं कर रहा है norm!इसलिए यह विम कस्टम मैपिंग में हस्तक्षेप कर सकता है!


5

MATL , 19 बाइट्स

'|-| '2:"iqWQB]E!+)

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

व्याख्या

दृष्टिकोण इस अन्य उत्तर में उपयोग के समान है । कोड प्रपत्र का एक संख्यात्मक सरणी बनाता है

3 2 2 2 3
1 0 0 0 1
1 0 0 0 1
1 0 0 0 1
1 0 0 0 1
1 0 0 0 1
1 0 0 0 1
3 2 2 2 3

और फिर इसके मूल्यों को '|-| 'वांछित परिणाम उत्पन्न करने के लिए स्ट्रिंग में (1-आधारित, मॉड्यूलर) सूचक के रूप में उपयोग किया जाता है ।

'|-| '                % Push this string
      2:"     ]       % Do this twice
         i            % Take input
          q           % Subtract 1
           W          % 2 raised to that
            Q         % Add 1
             B        % Convert to binary
               E      % Multiply by 2
                !     % Transpose
                 +    % Add with broadcast
                  )   % Index (modular, 1-based) into the string

5

05AB1E , 23 22 20 बाइट्स

ऊंचाई के रूप में लिया गया इनपुट, फिर चौड़ाई।

F„ -N_N¹<Q~è²Í×'|.ø,

व्याख्या

F                          # height number of times do
    N_                     # current row == first row
          ~                # OR
      N¹<Q                 # current row == last row
 „ -       è               # use this to index into " -"
            ²Í×            # repeat this char width-2 times
               '|          # push a pipe
                 .ø        # surround the repeated string with the pipe
                   ,       # print with newline

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

अदनान की बदौलत 2 बाइट बच गईं


अगर-स्टेटमेंट के बजाय सबस्ट्रिंग का उपयोग करना दो बाइट्स को बचाता है F„ -N_N¹<Q~è²Í×'|.ø,:।
अदनान

5

सी, 73 बाइट्स

i;f(w,h){for(i=++w*h;i--;)putchar(i%w?~-i%w%~-~-w?i/w%~-h?32:45:124:10);}

4

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

w,h=input()
for c in'-%*c'%(h-1,45):print'|'+c*(w-2)+'|'

flornquake ने एक बाइट को बचाया।


1
स्ट्रिंग प्रारूपण का अच्छा उपयोग! आप %cरूपांतरण का उपयोग करके एक बाइट को बचा सकते हैं :'-%*c'%(h-1,45)
फटा

ओह, मैंने सोचा %*cकि यह भी कोई बात नहीं है! धन्यवाद। :)
लिन

'-%%%dc'%~-h%45उसी लंबाई के लिए भी काम करता है।
xnor

4

आम लिस्प, 104 बाइट्स

golfed:

(defun a(w h)(flet((f(c)(format t"|~v@{~A~:*~}|~%"(- w 2)c)))(f"-")(loop repeat(- h 2)do(f" "))(f"-")))

Ungolfed:

(defun a (w h)
  (flet ((f (c) (format t "|~v@{~A~:*~}|~%" (- w 2) c)))
    (f "-")
    (loop repeat (- h 2) do
     (f " "))
    (f "-")))

3

टर्टल , 40 बाइट्स

दुभाषिया थोड़ा बग़दाद नहीं रह गया है

?;,u[*'|u]'|?@-[*:l'|l[|,l]d@ ],ur[|'-r]

व्याख्या

?                            - input integer into register
 ;                           - move down by the contents of register
  ,                          - write the char variable, default *
   u                         - move up
    [*   ]                   - while current cell is not *
      '|                     - write |
        u                    - move up
          '|                 - write | again
            ?                - input other integer into register
             @-              - set char variable to -
               [*             ] - while current char is not *
                 :l'|l          - move right by amount in register, move left, write |, move left again
                      [|,l]     - while current cell is not |, write char variable, move left
                           d@   - move down, set char variable to space (this means all but first iteration of loop writes space)
                               ,ur   -write char variable, move up, right
                                  [|   ] -while current char is not |
                                    '-r - write -, move right

3

गणितज्ञ, 67 64 बाइट्स

मुझे याद दिलाने के लिए lastresort और TuukkaX के लिए धन्यवाद कि गोल्फरों को डरपोक होना चाहिए और 3 बाइट्स बचाने चाहिए!

सीधा कार्यान्वयन। स्ट्रिंग्स की एक सरणी देता है।

Table[Which[j<2||j==#,"|",i<2||i==#2,"-",0<1," "],{i,#2},{j,#}]&

1
के 0<1स्थान पर उपयोग करेंTrue
u54112

1
मुझे लगता है कि j==1कम किया जा सकता करने के लिए j<1, और i==1करने के लिए i<1
यति

3

पायथन 3, 104 95 बाइट्स

(@ mbomb007: -9 बाइट्स से प्रतिक्रिया)

def d(x,y):return'\n'.join(('|'+('-'*(x-2)if n<1or n==~-y else' '*(x-2))+'|')for n in range(y))

(मेरा पहला कोड गोल्फ, प्रतिक्रिया की सराहना)


स्वागत हे! आप कुछ रिक्त स्थान को हटा सकते हैं, range(y)इसके स्थान पर उपयोग कर सकते हैं range(0,y), और यदि nआप कभी भी नकारात्मक उपयोग नहीं कर सकते हैंif n<1or n==~-y else
mbomb007

पायथन टिप्स पेज देखें
mbomb007

@ mbomb007 धन्यवाद! मैं इसे देख लूँगा।
बायारिटी

2

बैच, 128 बाइट्स

@set s=
@for /l %%i in (3,1,%1)do @call set s=-%%s%%
@echo ^|%s%^|
@for /l %%i in (3,1,%2)do @echo ^|%s:-= %^|
@echo ^|%s%^|

कमांड-लाइन मापदंडों के रूप में चौड़ाई और ऊंचाई लेता है।


2

हैक्स, 112 106 बाइट्स

function R(w,h){for(l in 0...h){var s="";for(i in 0...w)s+=i<1||i==w-1?'|':l<1||l==h-1?'-':' ';trace(s);}}

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

R(5, 8)
|---|
|   |
|   |
|   |
|   |
|   |
|   |
|---|

R(10, 3)
|---------|
|         |
|---------|

2

जावा 135 बाइट्स

public String rect(int x, int y){
String o="";
for(int i=-1;++i<y;){
o+="|";
for(int j=2;++j<x)
if(i<1||i==y-1)
o+="-";
else
o+=" ";
o+="|\n";
}
return o;
}

golfed:

String r(int x,int y){String o="";for(int i=-1;++i<y;){o+="|";for(int j=2;++j<x;)if(i<1||i==y-1)o+="-";else o+=" ";o+="|\n";}return o;}

मैं 136 की गिनती करता हूं :) आप पहले कॉमा के बाद अंतरिक्ष को हटाकर एक चार को भी बचा सकते हैं।
क्रिश्चियन रोंडेउ

1
सबसे पहले, यह कोड संकलित नहीं करता है। यहां तक ​​कि अगर यह संकलित करता है, तो यह ओपी के रूप में वर्तमान में एक आयत को 'आकर्षित' नहीं करेगा। -1।
यति

@TuukkaX मैंने उस न्यूलाइन प्रॉब्लम को ठीक किया, लेकिन मुझे ऐसा कोई कारण नहीं दिख रहा है कि इसे क्यों न संकलित किया जाए। बेशक आपको उस कोड को एक कक्षा में रखना होगा, लेकिन फिर यह काम करना चाहिए।
रोमन ग्रैफ़

1
"मुझे ऐसा कोई कारण नहीं दिख रहा है कि इसे क्यों न संकलित किया जाए"। यह क्या है o+=x "|\n":? क्या आपको +वहाँ लगाने का मतलब था?
यति

धन्यवाद। मैं वहां किसी भी पात्र को रखना नहीं चाहता था।
रोमन ग्रैफ

2

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
|-----|
|     |
|     |
|     |
|     |
|-----|

2

PHP, 82 बाइट्स

list(,$w,$h)=$argv;for($p=$h--*$w;$p;)echo$p--%$w?$p%$w?$p/$w%$h?" ":"-":"|
":"|";

न्यूलाइन सहित एक स्थिर स्ट्रिंग अनुक्रमणिका

list(,$w,$h)=$argv;         // import arguments
for($p=$h--*++$w;$p;)       // loop $p through all positions counting backwards
    // decrease $h and increase $w to avoid parens in ternary conditions
    echo" -|\n"[
        $p--%$w             // not (last+1 column -> 3 -> "\n")
        ?   $p%$w%($w-2)    // not (first or last row -> 2 -> "|")
            ?+!($p/$w%$h)   // 0 -> space for not (first or last row -> 1 -> "-")
            :2
        :3
    ];

प्रिय downvoter: क्यों?
टाइटस

1
ऐसा इसलिए हो सकता है क्योंकि किसी उपयोगकर्ता ने देखा कि आपके उत्तर को समीक्षा कतार में निम्न गुणवत्ता के रूप में चिह्नित किया गया था। यदि आप अपने कोड का स्पष्टीकरण, या एक-लाइनर से अधिक कुछ भी पोस्ट करते हैं, तो आप इसे स्वचालित रूप से फ़्लैग किए जाने से बचा सकते हैं।
mbomb007

@ समाधि: मैंने कभी किसी को एक गैर-एसो भाषा में एक ऑनलाइनर के लिए विवरण पोस्ट करते नहीं देखा।
टाइटस

या आउटपुट, या एक गैर-गोल्फ संस्करण। यह तब तक मायने नहीं रखता जब तक सामग्री बहुत कम न हो। लेकिन अगर आपने ऐसा नहीं देखा है तो आप शायद लंबे समय तक नहीं रहे हैं। कुछ पायथन वन-लाइनर्स बहुत जटिल हो सकते हैं। कुछ @ xnor की तरफ देखो।
mbomb007

2

रूबी, 59 54 52 बाइट्स

ओह, यह बहुत आसान है :)

->x,y{y.times{|i|puts"|#{(-~i%y<2??-:' ')*(x-2)}|"}}

आइडोन पर टेस्ट रन


1
आप के बजाय एक शाब्दिक newlines का उपयोग करके कुछ बाइट्स बचा सकता है \n
जॉर्डन

1
आप बाइट्स को परिभाषित नहीं करके बचा सकते हैं iऔर j। की iपरिभाषा के साथ बदलें x-=2। इसके बजाय j, बस उपयोग करें (y-2)
m-chrzan

हाँ, धन्यवाद :)
daniero

2

पर्ल, 48 बाइट्स

के लिए +1 शामिल है -n

STDIN पर 2 लाइनों के रूप में आकार दें

perl -nE 'say"|".$_ x($`-2)."|"for"-",($")x(<>-1-/$/),"-"'
3
8
^D

बस कोड:

say"|".$_ x($`-2)."|"for"-",($")x(<>-1-/$/),"-"

हमेशा की तरह अच्छा लगा। ध्यान दें कि आपको पंक्ति के अंत में एक बैकटिक मिल गया है, जबकि आप शायद एक भी उद्धरण लिखना चाहते हैं ;-)
दादा

@ दादा ने तय किया। धन्यवाद।
टन हास्पेल

2

लुआ, 120 93 बाइट्स

जटिलताओं पर बेवकूफी को दूर करके काफी कुछ बाइट्स को बचाया।

function(w,h)function g(s)return'|'..s:rep(w-2)..'|\n'end b=g'-'print(b..g' ':rep(h-2)..b)end

Ungolfed:

function(w,h)                           -- Define Anonymous Function
    function g(s)                       -- Define 'Row Creation' function. We use this twice, so it's less bytes to function it.
        return'|'..s:rep(w-2)..'|\n'    -- Sides, Surrounding the chosen filler character (' ' or '-'), followed by a newline
    end
    b=g'-'                              -- Assign the top and bottom rows to the g of '-', which gives '|---------|', or similar.
    print(b..g' ':rep(h-2)..b)          -- top, g of ' ', repeated height - 2 times, bottom. Print.
end

इसे Repl.it पर आज़माएं


1

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

def f(a,b):c="|"+"-"*(a-2)+"|\n";print c+c.replace("-"," ")*(b-2)+c

उदाहरण

f(3,3)

|-|
| |
|-|

f(5,8)

|---|
|   |
|   |
|   |
|   |
|   |
|   |
|---|

f(10,3)

|--------|
|        |
|--------|

1

MATL , 21 17 बाइट्स

Z"45ILJhY('|'5MZ(

यह MATL- ईश्वर की तुलना में थोड़ा अलग दृष्टिकोण है ।

Z"                   Make a matrix of spaces of the given size
  45ILJhY(           Fill first and last row with '-' (code 45)
          '|'5MZ(    Fill first and last column with '|' (using the automatic clipboard entry 5M to get ILJh back)

सभी मदद के लिए धन्यवाद @LuisMendo!

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


1

PHP 4.1, 76 बाइट्स

<?$R=str_repeat;echo$l="|{$R('-',$w=$W-2)}|
",$R("|{$R(' ',$w)}|
",$H-2),$l;

यह मानता है कि आपके पास php.iniइस संस्करण के लिए डिफ़ॉल्ट सेटिंग्स हैं, जिसमें शामिल हैं short_open_tagऔरregister_globals सक्षम हैं।

इसके लिए एक वेब सर्वर (जैसे: अपाचे) के माध्यम से पहुंच की आवश्यकता होती है, जो सत्र / कुकी / POST / GET चर पर मानों को पार कर रहा है।
कुंजी Wचौड़ाई को नियंत्रित करती है और कुंजी Hऊंचाई को नियंत्रित करती है।
उदाहरण के लिए:http://localhost/file.php?W=3&H=5


@ टिट्स आपको लिंक पढ़ना चाहिए। उद्धरण: "PHP 4.2.0 के रूप में, यह निर्देश बंद करने के लिए चूक "।
इस्माईल मिगुएल

आउच सॉरी मैं सब कुछ वापस ले लेता हूं। आपके शीर्षक में संस्करण है। मुझे और ध्यान से पढ़ना चाहिए।
टाइटस

@ यह ठीक है, चिंता मत करो। आप पर कठोर होने के लिए क्षमा करें।
इस्माइल मिगुएल

कोई बात नहीं; वह मूल्य जो मैं पांडित्य होने के लिए चुकाता हूं। : डी
टाइटस

@Titus इसके बारे में चिंता मत करो। जैसा कि आप जानते हैं, मेरे लगभग आधे उत्तर PHP 4.1 में लिखे गए हैं। यह इनपुट के साथ टन बाइट्स बचाता है
Ismael Miguel

1

पायथन 3, 74 वर्ण

p="|"
def r(w,h):m=w-2;b=p+"-"*m+p;return b+"\n"+(p+m*" "+p+"\n")*(h-2)+b

1

स्विफ्ट (2.2) 190 बाइट्स

let v = {(c:String,n:Int) -> String in var s = "";for _ in 1...n {s += c};return s;};_ = {var s = "|"+v("-",$0-2)+"|\n" + v("|"+v(" ",$0-2)+"|\n",$1-2) + "|"+v("-",$0-2)+"|";print(s);}(10,5)

मुझे लगता है कि स्विफ्ट 3 इसे बहुत अधिक गोल्फ कर सकती है लेकिन मुझे स्विफ्ट 3 डाउनलोड करने का मन नहीं है।


1

एफ #, 131 बाइट्स

let d x y=
 let q = String.replicate (x-2)
 [for r in [1..y] do printfn "%s%s%s" "|" (if r=y||r=1 then(q "-")else(q " ")) "|"]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.