बक्से पैदा करो!


19

आपका कार्य दिए गए इनपुट के संबंध में किसी भी एक ASCII चरित्र का उपयोग करके बक्से उत्पन्न करना है।

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

1 1   --> =====
          =   =
          =====

1 2   --> =========
          =   =   =
          =========

2 1   --> =====
          =   =
          =====
          =   =
          =====

2 2   --> =========
          =   =   =
          =========
          =   =   =
          =========

2 5   --> =====================
          =   =   =   =   =   =
          =====================
          =   =   =   =   =   =
          =====================

इनपुट

  • इनपुट निम्न में से किसी एक से लिया जा सकता है

    • stdin
    • कमांड-लाइन तर्क
    • समारोह तर्क (2 तर्क, प्रत्येक संख्या के लिए एक)
  • इनपुट, यदि stdinकमांड लाइन आर्ग्युमेंट्स से लिया गया है, तो दो पॉजिटिव पूर्णांक होंगे, जिन्हें एक स्थान से अलग किया जाएगा।

  • दो नंबर प्रत्येक स्तंभ और पंक्ति में बक्से की संख्या को दर्शाते हैं

उत्पादन

  • बक्से stdout(या निकटतम समकक्ष) में आउटपुट होना चाहिए
  • प्रत्येक बॉक्स में तीन क्षैतिज स्थान होने चाहिए

नियम

  • दोनों की संख्या 0 से अधिक होगी, लेकिन 1000 से आगे नहीं जाएगी
  • बक्से के आउटपुट के लिए किसी भी दृश्य वर्ण का उपयोग किया जा सकता है। (जब तक वे आँख पर बहुत कठोर नहीं हैं!)
  • आपको एक पूर्ण कार्यक्रम या एक फ़ंक्शन लिखने की अनुमति है।
  • एक वैकल्पिक अनुगामी न्यूलाइन वर्ण को छोड़कर कोई अनावश्यक वर्ण नहीं होना चाहिए।

स्कोरिंग

यह , इसलिए सबसे छोटा सबमिशन (बाइट्स में) जीतता है।

जवाबों:


10

पायथ, 23 बाइट्स

Mjbmsm@"= "&%k4dh*4HhyG

फ़ंक्शन को परिभाषित करता है gजो वांछित के रूप में काम करता है।

प्रदर्शन।


10

रेटिना , 57 बाइट्स

1(?=.* (1*))
$1#$1#


1(?=(1*#1*#)*$)
=   
1
====
#
=#

एक अनुगामी न्यूलाइन के साथ यूनरी में इनपुट लेता है।

प्रत्येक पंक्ति को अपनी स्वयं की फ़ाइल पर #जाना चाहिए और फ़ाइलों में नई पंक्ति में बदलना चाहिए। यह अव्यावहारिक है लेकिन आप कोड को -sध्वज के साथ एक फ़ाइल के रूप में चला सकते हैं , #मार्करों को रखते हुए (और #इनपुट में अनुगामी न्यूलाइन को भी बदल सकते हैं)। #अगर तुम चाहो तो पठनीयता के लिए उत्पादन में newlines पर वापस बदल सकते हैं । उदाहरण के लिए:

> echo -n 11 111#|retina -s boxes|tr # '\n'
=============
=   =   =   =
=============
=   =   =   =
=============

विधि: 5 एकल प्रतिस्थापन चरण। पहले दो (पहले 4 लाइनों) एक बनाता 2*N+1द्वारा Mलोगों की ग्रिड और अगले 3 चरणों (6 लाइनों) यह वांछित आउटपुट में स्वरूपित।

मध्यवर्ती स्ट्रिंग्स (सीमांकित द्वारा -):

11 111
------------------
111
111
111
111
 111
------------------
111
111
111
111
111
------------------
111
=   =   =   
111
=   =   =   
111
------------------
============
=   =   =   
============
=   =   =   
============
------------------
=============
=   =   =   =
=============
=   =   =   =
=============

प्रति पंक्ति एक फ़ाइल हमेशा एक बहुत ही अजीब डिजाइन विकल्प की तरह लगती है।
जिज्ञासु ने

1
@curiousdannii यह इस तरह से बनाया गया था ताकि न्यूलाइन वर्ण बचने के बिना regex अभिव्यक्तियों में प्रयोग करने योग्य होगा लेकिन इसे एक अधिक उचित 1-फ़ाइल प्रारूप में बदलने की योजना है।
रैंडम

8

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

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

आउटपुट alert(पॉपअप) के माध्यम से । के रूप में alertउपयोग एक आनुपातिक फ़ॉन्ट, हम बजाय अंतरिक्ष के लिए एक चौड़ाई समान के साथ एक पत्र का उपयोग कर एक बेहतर परिणाम प्राप्त =

कंसोल में वास्तविक alertउत्पादन के लिए कंसोल का उपयोग करके परीक्षण करें , या नीचे स्निपेट चलाएं।

f=(r,c)=>{for(x=y="|";c--;)x+="||||",y+="   |";for(o=x;r--;)o+=`
${y}
`+x;alert(o)}

// TEST

// redefine alert to avoid that annoying popup during test
alert=x=>O.innerHTML=x

test=_=>([a,b]=I.value.match(/\d+/g),f(a,b))

test()
<input id=I value='2 3'><button onclick="test()">-></button>
<pre id=O></pre>


रन कोड स्निपेट मेरे लिए काम नहीं करता है, बस '2 3' के साथ एक बॉक्स देखें और एक तीर जो सुझाव देता है कि परिणाम प्राप्त करने के लिए आपको इसे क्लिक करना चाहिए। पूर्ण पृष्ठ बटन का उपयोग करना या किसी भिन्न ब्राउज़र को आज़माना कुछ भी नहीं बदलता है।
डेनिस जहरुद्दीन

@ डेनिसजेरुद्दीन, क्रोम का उपयोग करते समय मेरे लिए भी ऐसा ही होता है (ईएस 6 का समर्थन नहीं करता है)। फ़ायरफ़ॉक्स की कोशिश करें।
स्पिकैट्रिक्स

1
@ डेनिसजेरुद्दीनTest in Firefox
edc65

7

जावास्क्रिप्ट (ईएस 6), 75 73

प्रचुर repeatकॉल का उपयोग करते हुए , हम दोहराते हैं |, फिर |अनुगामी स्थानों के साथ दोहराते हैं , और पंक्तियों को बनाने के लिए दोनों दोहराते हैं:

f=(y,x)=>alert(((s="|"[r="repeat"](x*4)+`|
`)+"|   "[r](x)+`|
`)[r](y)+s)

(टेम्प्लेट स्ट्रिंग्स का उपयोग करने के लिए edc65 के सुझाव के अनुसार न्यूलाइन्स महत्वपूर्ण हैं।)

स्निपेट:

<input id="x" type="range" max="10" min="1" step="1" value="3"><input id="y" type="range" max="10" min="1" step="1" value="2"><pre id="o"></pre><script>function f(y,x){return ((s="|"[r="repeat"](x*4)+"|\n")+"|   "[r](x)+"|\n")[r](y)+s};function redraw(){document.getElementById("o").innerHTML=f(document.getElementById("y").value,document.getElementById("x").value)};document.getElementById("x").onchange=redraw;document.getElementById("y").onchange=redraw;document.getElementById("x").oninput=redraw;document.getElementById("y").oninput=redraw;redraw();</script>

टेंपरेचर स्ट्रिंग्स के बिना, बिना मेथड-नाम के पुन: उपयोग, और जोड़े गए व्हाट्सएप के साथ:

f=(y,x)=>alert(
    (
      (s="|".repeat(x*4)+"|\n") + 
      "|   ".repeat(x)+"|\n"
    ).repeat(y)+s
)

( बेहतर दृश्य रिक्ति के लिए उपयोग करने के लिए edc65 की अनुशंसा का उपयोग |करना।)


7

पिप, 29 24 = 23 + 1 बाइट्स

-nध्वज की आवश्यकता है । कमांड-लाइन आर्ग के रूप में ऊंचाई और चौड़ाई लेता है और 1एस के बक्से का निर्माण करता है ।

([1X4m]XbRLa+1)@<v.1R0s

स्पष्टीकरण:

                         a,b are cmdline args; m is 1000; v is -1; s is " " (implicit)
 [1X4m]                  List containing 1111 and 1000
       Xb                String repetition of each element b times
         RLa+1           Repeat the list a+1 times
(             )@<v       Now we have one row too many at the end, so take everything
                         but the last item (equiv to Python x[:-1])
                  .1     Concatenate a 1 to the end of each row
                    R0s  Replace 0 with space
                         Print, joining list on newlines (implicit, -n flag)

यह कार्यक्रम इस तथ्य का भारी लाभ उठाता है कि तार संख्याएं हैं और संख्याएं पिप में तार हैं। (और उन बक्सों में तीन स्पेस बिल्ट-इन mवैरिएबल का लाभ उठाने के लिए सही थे !)

यहां बताया गया है कि सूची इनपुट के साथ कैसे बनाई जाती है 2 3:

[1111;1000]
[111111111111;100010001000]
[111111111111;100010001000;111111111111;100010001000;111111111111;100010001000]
[111111111111;100010001000;111111111111;100010001000;111111111111]
[1111111111111;1000100010001;1111111111111;1000100010001;1111111111111]
[1111111111111;"1   1   1   1";1111111111111;"1   1   1   1";1111111111111]

और अंतिम उत्पादन:

C:\> pip.py 2 3 -ne "([1X4m]XbRLa+1)@<v.1R0s"
1111111111111
1   1   1   1
1111111111111
1   1   1   1
1111111111111

पिप पर अधिक


6

पर्ल, 72 63 52 50 बाइट्स

मेरा सबसे छोटा संस्करण अभी तक $/एक नई पंक्ति को अधिक कॉम्पैक्ट रूप से प्राप्त करने के लिए उपयोग करता है:

$ perl -e 'print((($,="="."   ="x pop.$/)=~s/./=/gr)x(1+pop))' 2 5
=====================
=   =   =   =   =   =
=====================
=   =   =   =   =   =
=====================

पिछला अद्यतन आउटपुट रिकॉर्ड विभाजक में ज्यादातर खाली लाइनें डालता है $,, और निरंतर लाइनों की सूची प्रिंट करता है।

$ perl -e 'print((($,="="."   ="x pop."\n")=~s/./=/gr)x(1+pop))' 2 5

पिछला संस्करण आकस्मिक पाठक के लिए थोड़ा स्पष्ट हो सकता है:

$ perl -E 'say($y=($x="="."   ="x pop)=~s/./=/gr);for(1..pop){say$x;say$y}' 2 5

इसके @ARGVबजाय पहले संस्करण का उपयोग किया गया pop:

$ perl -E 'say($y=($x="="."   ="x$ARGV[1])=~s/./=/gr);for(1..$ARGV[0]){say$x;say$y}' 2 5


5

GNU sed -r, 160

आह, मैंने सोचा कि यह छोटा होगा, लेकिन यहां यह वैसे भी है। दुर्भाग्य से sed regexes में कोई भी लुक-अप क्षमता नहीं है।

:
s/(.*)1$/   =\1/;t
s/([= ]+)/\1\n\1/
:b
s/   (.*\n)/===\1/;tb
s/(1*)1 $/\n\1/
:c
s/([^\n]*\n[^\n]*\n)(1*)1$/\1\1\2/;tc
s/(=+)(.*)/\1\2\1/
s/(^|\n)(.)/\1=\2/g

एसटीडीआईएन से इनपुट के रूप में लेना

$ sed -rf boxes.sed <<< "11 111"
=============
=   =   =   =
=============
=   =   =   =
=============
$

4

सीजेएम, 25 बाइट्स

q~)S3*'=5*+4/f*3f>\)*1>N*

CJam दुभाषिया में इसे ऑनलाइन आज़माएं ।

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

q~                        e# Read H and W from STDIN.
   S3*'=5*+               e# Push "   =====".
           4/             e# Chop into ["   =" "===="].
  )          f*           e# Repeat each string W+1 times.
               3f>        e# Cut off the first three characters.
                  \)*     e# Repeat the resulting array H+1 times.
                     1>   e# Remove the first string.
                       N* e# Join the lines.

4

मारबेलस, 168 बाइट्स

यह उत्तर केवल मार्लबस भाषा की सीमाओं के कारण 255x255 तक काम करता है, न कि 1000x1000 तक। मैं 32-बिट लाइब्रेरी पर काम कर रहा हूं, लेकिन यह जल्द ही तैयार होने वाला नहीं है।

इनपुट को मुख्य बोर्ड में दो कमांड लाइन पैरामीटर या फ़ंक्शन पैरामीटर के रूप में प्रदान किया जाता है।

@2@3}1@0
SLEL//>0\/
@3@1}0--
}1&0@0/\&0
@1/\@2}1\/
:SL
..}0@0
&0/\>0&0
EN..--\/
{0@0/\ES
:EL
..@0
..>0EN
}0--\/
@0/\EX
:EX
}0
\/3D3D3D3D
:ES
}0
\/3D202020
:EN
}0
{03D0A

स्यूडोकोड:

MB(H,W):
    EL(W)
    for 1..H:
        SL(W)
        EL(W)
EL(W):
    for 1..W:
        EX()
    EN()
SL(W):
    for 1..W:
        ES()
    EN()
EX():
    print "===="
ES():
    print "=   "
EN():
    print "=\n"

3

CJam 52 51 46 41 बाइट्स

l~:B;:A;'=:U{{U4*}B*N}:V~{U{SZ*U}B*NUV}A*

-5 वर्णों के लिए Sp3000 के लिए धन्यवाद

एक और 5 वर्णों के लिए मार्टिन ब्यूटनर tt का धन्यवाद

कोशिश करो


3

c फ़ंक्शन, 81

x,y;f(h,w){for(;y<=h*2;y++)for(x=0;x<w*4+2;x++)putchar(x>w*4?10:x&3&&y&1?32:61);}

परीक्षण कार्यक्रम:

x,y;f(h,w){for(;y<=h*2;y++)for(x=0;x<w*4+2;x++)putchar(x>w*4?10:x&3&&y&1?32:61);}

int main (int argc, char **argv)
{
  f(2, 3);
}

मैंने कुछ पात्रों को एक पंक्ति के बजाय डबल के रूप में x;f(h,w){for(w=w*4+2;x<=w*h*2+w;x++)putchar(x%w?x/w%2?x%w%4!=1?32:61:61:10);}

1
पहले दूसरे जवाबों को देखना चाहिए था = /, मेरी टिप्पणी रेटो कोराडी के उत्तर का एक लंबा संस्करण है।

हां, मैंने इसे एक (छोटे) लूप में लाने के लिए काफी कठिन (और असफल) कोशिश की
डिजिटल ट्रॉमा

3

PHP4.1, 76 71 69 बाइट्स

यह उतना ही गोल्फ है जितना मुझे मिल सकता है।

$R=str_repeat;echo$R(($T=$R('-',4*$H+1))."
|{$R('   |',$H)}
",$V),$T;

यह कुंजी के Hलिए लाइनों Vकी संख्या और प्रति पंक्ति बक्से की संख्या की अपेक्षा करता है ।

मैं उपयोग कर रहा हूँ -और |सिर्फ इसलिए कि बक्से वास्तव में बक्से की तरह दिखते हैं। यदि आवश्यक हो, तो मैं इसे बदल सकता हूं =। यह प्रयोग किया जाता है कि चार से कोई फर्क नहीं पड़ता।
छोड़ना -और |उस गंदगी को समझने में मदद करता है जो चल रही है।


पुरानी विधि, 76 बाइट्स:

for($R=str_repeat;$H--;)echo$T=$R('-',($V*4)+1),"
|{$R('   |',$V)}
";echo$T;

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

http://localhost/file.php?H=2&V=3

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

3

जूलिया, 59 बाइट्स

(n,m)->(l="="^(4m+1)*"\n";print(l*("="*"   ="^m*"\n"*l)^n))

यह एक अनाम फ़ंक्शन बनाता है जो दो पूर्णांकों को इनपुट के रूप में स्वीकार करता है और परिणाम को STDOUT में प्रिंट करता है। इसे कॉल करने के लिए, इसे एक नाम दें, उदा f=(n,m)->...

असंगठित + स्पष्टीकरण:

function f(n, m)
    # Store the solid row
    l = "="^(4m + 1) * "\n"

    # Print all rows by repeating a pattern n times
    print(l * ("=" * "   ="^m * "\n" * l)^n)
end

उदाहरण:

julia> f(2, 3)
=============
=   =   =   =
=============
=   =   =   =
=============

julia> f(1, 5)
=====================
=   =   =   =   =   =
=====================

किसी भी सुझाव का स्वागत है।


3

बैश + कोरुटिल्स, 57

dc -e"2do$2 4*1+^1-pd8*F/1+$1si[fli1-dsi0<c]dscx"|tr 0 \ 

यह dcबाइनरी संख्या को प्रिंट करने के लिए उपयोग करता है 1जो बॉक्स किनारों के 0लिए और रिक्त स्थान के लिए है।

  • सभी लोगों की संख्या X द्वारा गणना की जाती है 2 ^ (width * 4 + 1) - 1, फिर धक्का दिया जाता है और मुद्रित किया जाता है
  • 10001...0001संख्या से गणना की जाती है , तो धक्का दियाX* 8 / 15 + 1
  • तब ढेर को डंप किया जाता heightहै

trफिर रूपांतरित 0अंतरिक्ष अक्षरों तक रों।

उत्पादन

$ ./boxes.sh 2 4
11111111111111111
1   1   1   1   1
11111111111111111
1   1   1   1   1
11111111111111111
$ 

3

आर, 83 81

एक अनाम फ़ंक्शन के रूप में पैरामीटर के रूप में एच और डब्ल्यू ले रहा है। प्रत्येक पंक्ति के लिए 1 और दूसरी पंक्तियों को वेक्टर में बनाता है और इसे दोहराता है h। नीचे की रेखा के लिए एक वेक्टर जोड़ता है और लाइनों की लंबाई को सीमित करने के catलिए वेक्टर का उपयोग fillकरता है। अब किसी भी दृश्य चरित्र नियम का लाभ उठाता है।

function(h,w)cat(rep(c(A<-rep(1,w*4+2),rep('   1',w)),h),A[-1],fill=w*4+1,sep='')

परीक्षण चालन

> f=function(h,w)cat(rep(c(A<-rep(1,w*4+2),rep('   1',w)),h),A[-1],fill=w*4+1,sep='')
> f(4,2)
111111111
1   1   1
111111111
1   1   1
111111111
1   1   1
111111111
1   1   1
111111111
> 

3

पायथन 3 2, 160 87 85 79 बाइट्स

मुझे पता है कि यह बहुत अधिक गोल्फ हो सकता है , मैं कुछ सुझाव चाहूंगा क्योंकि यह गोल्फ में मेरा पहला प्रयास है।

def d(x,y):
    for i in[1]*x:print'='*(4*y+1)+'\n'+'=   '*(y+1)
    print'='*(4*y+1)

@Cool Guy और @ Sp3000 की युक्तियों के लिए धन्यवाद, मैंने आकार को केवल आधे से ऊपर नीचे तक सीमित कर दिया ।

जैसे: d (3,3)

=============
=   =   =   =   
=============
=   =   =   =   
=============
=   =   =   =   
=============

इसे यहाँ आज़माएँ

अनुगामी व्हाट्सएप का उपयोग करें।


1
इंडेंटेशन लेवल को कम किया जा सकता है।
स्पिकट्रिक्स

3
फिर आपको सूची बनाने की आवश्यकता नहीं है। स्ट्रिंग्स को गुणा किया जा सकता है'='*(4*y+1)
Sp3000

1
सेटिंग w=4*y+13 बाइट्स बचाता है।
DLosc

@ कूल गाइ मैं एक टैब का उपयोग कर रहा हूं, 4 रिक्त स्थान नहीं।
nsane

ओह ठीक। उस पर ध्यान नहीं दिया।
स्पिकैट्रिक्स

2

केडीबी (क्यू), 37 बाइट्स

{(3+2*x-1)#(5+4*y-1)#'(4#"=";"=   ")}

व्याख्या

                      (4#"=";"=   ")     / box shape
           (5+4*y-1)#'                   / extend y axis
 (3+2*x-1)#                              / extend x axis
{                                   }    / lambda

परीक्षा

q){(3+2*x-1)#(5+4*y-1)#'(4#"=";"=   ")}[2;5]
"====================="
"=   =   =   =   =   ="
"====================="
"=   =   =   =   =   ="
"====================="

2

जावास्क्रिप्ट, 92 85 बाइट्स

मुझे उम्मीद थी कि यह अन्य जेएस उत्तर (हमेशा की तरह अच्छा काम, edc65) से छोटा होगा, लेकिन ओह ठीक है। मुझे लग रहा है कि यहाँ गणित को और अधिक निखारा जा सकता है।

f=(r,c)=>(x=>{for(i=s='';(y=i++/x)<r-~r;)s+=i%x?' *'[-~y%2|!(-~i%4)]:'\n'})(4*c+2)||s

क्षमा करें, गणित के साथ मदद नहीं कर सकता - मेरा सिर घूम रहा है ... लेकिन यहाँ कुछ सूक्ष्म है: f=(r,c)=>(x=>{for(i=s='';(y=i++/x)<r-~r;)s+=i%x?' *'[-~y%2|!(-~i%4)]:'\n'})(4*c+2)||s-> 85
edc65

@ edc65 यह बहुत अच्छा है, धन्यवाद! 2*r+1=> जैसी चीजें हैं r-~r, जो कि गणित को गोल करके मुझे बताई गई हैं, और यह एक विशेष प्रतिभा है। :)
vvye

2

सप्टक, 69 65 64

y=ones([2,4].*input()+1);y(1:2:end,:)=y(:,1:4:end)=4;char(y+31)

उन मुद्दों की ओर इशारा करने के लिए DLosc को धन्यवाद, जिन्होंने -1 का नेतृत्व किया

इनपुट को [1 1]आउटपुट के रूप में लेता है :

#####
# #
#####

आप केवल '1' इनपुट कर सकते हैं और 1x1 प्राप्त कर सकते हैं। यदि इनपुट वास्तव में होना चाहिए 1 1, तो आकार ऊपर चला जाता है88 8584 :

y=ones([2,4].*eval(['[',input(0,'s'),']'])+1);y(1:2:end,:)=y(:,1:4:end)=4;char(y+31)

नोट: मतलाब ऑक्टेव के अस्तर या इनपुट (पूर्णांक) की अनुमति नहीं देता है, लेकिन यहाँ मतलब संस्करण ( 67 ) है:

y=ones([2,4].*input('')+1);y(1:2:end,:)=4;y(:,1:4:end)=4;char(y+31)

2

सी, 76 बाइट्स

w,n;f(r,c){for(w=c*4+2,n=w*r*2+w;n--;)putchar(n%w?n/w%2&&n%w%4-1?32:61:10);}

तर्कों के रूप में पंक्तियों और स्तंभों की संख्या के साथ एक फ़ंक्शन के रूप में आमंत्रित किया गया। उदाहरण के लिए:

f(5, 2)

2

सीजेएम, 30 29 बाइट्स

+हटाए गए अंत में निरर्थक के साथ नया संस्करण (धन्यवाद, डेनिस):

l~_4*)'=*N+:F\'=S3*+*'=+N++*F

मुझे पता है कि डेनिस ने पहले से ही एक सीजेम समाधान पोस्ट किया था जो मीलों तक यह धड़कता है। लेकिन यह सीजेएम में मेरा पहला प्रयास है, इसलिए यह एक चमत्कार है कि यह बिल्कुल काम करता है। :)

काफी बल बल। 4 * H + 1 =संकेतों से पहली पंक्ति बनाता है , फिर दूसरी पंक्ति को =बार- Hबार, एक और =जोड़ा के साथ । फिर दो रेखाओं को समेटता है, पूरे Vसमय को दोहराता है , और फिर पहली पंक्ति की एक और प्रति जोड़ता है।

ऐसा लगता है कि मेरे पास बहुत अधिक स्टैक जोड़तोड़ है, और यहां तक ​​कि एक चर में पहली पंक्ति को भी समाप्त कर दिया क्योंकि मुझे स्टैक पर सामान को और भी अधिक फेरबदल करना पड़ा।

समग्र रूप से बहुत सुंदर नहीं है, लेकिन आपको कहीं और शुरू करना होगा ... और मैं पहले एक साधारण समस्या का प्रयास करना चाहता था।


आप +अंत में जरूरत नहीं है । CJam पूरे स्टैक को प्रिंट करता है।
डेनिस

2

सीजेम, २३

q~[F8]f{2b*1+' f+N}*_0=

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

स्पष्टीकरण:

q~        read and evaluate the input (height width)
[F8]      make an array [15 8] - 1111 and 1000 in base 2
f{…}      for width and each of [15 8]
  2b      convert the number to base 2
  *       repeat the digits "width" times
  1+      append a 1 to the array of digits (right edge)
  ' f+    add the space character to each digit (0->' ', 1->'!')
  N       push a newline
*         repeat the resulting array "height" times
_0=       copy the first line (bottom edge)


1

जावा, 181

मुझे उम्मीद है कि के अनुसार

आपको एक पूर्ण कार्यक्रम या एक फ़ंक्शन लिखने की अनुमति है।

यह फ़ंक्शन के बाइट्स की गणना करने के लिए नियमों के अनुरूप है , जो इस मामले में 181 है

import static java.lang.System.*;
public class Boxes
{
    public static void main(String[] args)
    {
        Boxes b=new Boxes();
        System.out.println("1,1:");
        b.b(1,1);
        System.out.println("1,2:");
        b.b(1,2);
        System.out.println("2,1:");
        b.b(2,1);
        System.out.println("2,2:");
        b.b(2,2);
        System.out.println("2,5:");
        b.b(2,5);
    }

    void b(int R, int C){String s="",e=s,x,y,z=s,a="====",n="=\n";int r,c;for(r=R;r-->0;){x=y=e;for(c=C;c-->0;){x+=a;y+="=   ";}s+=x+n+y+n;}for(c=C;c-->0;){z+=a;}s+=z+n;out.println(s);}
}

आउटपुट गलत है। आउटपुट नंबर 2 देखें : " प्रत्येक बॉक्स में तीन क्षैतिज स्थान होने चाहिए "। आपका कोड दो स्थानों को आउटपुट करता है, तीन नहीं
स्पिकैट्रिक्स

@CoolGuy ने इसे मिस किया - अब 2 बाइट्स और हैं, लेकिन इससे बहुत कुछ नहीं बदला ...
Marco13

1
ठीक। +1। बदलकर दो बाइट्स सहेजें for(r=R;r-->0;){x=y=e;for(c=C;c-->0;){x+=a;y+="= ";}s+=x+n+y+n;}करने के लिएfor(r=R;r-->0;s+=x+n+y+n){x=y=e;for(c=C;c-->0;y+="= "){x+=a;}}
Spikatrix

1

सी #, 153 151 150

यह वास्तव में प्रतिस्पर्धा नहीं कर सकता है लेकिन यहाँ यह सिर्फ मनोरंजन के लिए है:

(h,w)=>{string s="=",e="\n",a="====",b="   =",m=a,o;int i=0,j;for(;i++<=h*2;){o=s;for(j=0;j++<w+1;o=m)System.Console.Write(o);m=m==a?b:a;s=e+s;e="";}}

कैसे चलाएं:

public class Program
{
    public static void Main()
    {
        new System.Action<int, int>((h,w)=>{string s="=",e="\n",a="====",b="   =",m=a,o;int i=0,j;for(;i++<=h*2;){o=s;for(j=0;j++<w+1;o=m)System.Console.Write(o);m=m==a?b:a;s=e+s;e="";}})(3, 4);
    }
}

सुधार के लिए खोलें।


स्ट्रिंग को var से बदलें।
CSharpie

दुर्भाग्य से इसकी अनुमति नहीं है। इसे देखें
शामुद्र

1
intलूप के बाहर उन लोगों की घोषणा करना एक बाइट को बचा सकता है।
स्पिकैट्रिक्स

1

पायथन 2.7, 66 बाइट्स।

मुझे पता है कि अजगर में पहले से ही बेहतर समाधान हैं, लेकिन यह सबसे अच्छा है जिसके साथ मैं आया हूं।

def f(x,y):a,b,c="="*4,"   =","\n=";print "="+a*y+(c+b*y+c+a*y)*x

उदाहरण:

f(3,4)

=================
=   =   =   =   =
=================
=   =   =   =   =
=================
=   =   =   =   =
=================

क्षमा करें, लेकिन यह परीक्षण मामलों 2,3 और 5 के लिए गलत आउटपुट उत्पन्न करता है। आपने कॉलम और पंक्तियों को मिलाया और इसे विपरीत तरीके से प्राप्त किया।
स्पिकैट्रिक्स

1

रूबी, 57 48 45

f=->h,w{l=?=*w*4+?=;(l+$/+'=   '*w+"=
")*h+l}

उपयोग:

print f[2,5]

3 बाइट बचाने के लिए मैनटवर्क का धन्यवाद।


दो छोटे सुधार की संभावनाएं: '='?=और "<LF>"$/
मैनटवर्क

एक और छोटा: ?=*(w*4+1)?=+?=*w*4
मैनटवर्क

1

जावा, 123 119 बाइट्स

void p(int h,int w){String b="=",d="\n=";for(;w-->0;d+="   =")b+="====";for(d+="\n"+b;h-->0;b+=d);System.out.print(b);}

काउंटर मापदंडों के रूप में इनपुट मापदंडों का दुरुपयोग कोड आकार को कम करने में बहुत मदद करता है।

वाक्यविन्यास के दुरुपयोग का सुझाव देने के लिए कूल गाइ का धन्यवाद।


एक forलूप के बजाय लूप का उपयोग करके इसे अधिक गोल्फ करें while
स्पिकैट्रिक्स

दुर्भाग्य से (के लिए; -> 0;) के रूप में ही लंबाई है (डब्ल्यू -> 0)
ईसीएस

1
मेरा मतलब था while(w-->0){d+=" =";b+="====";}-> for(;w-->0;b+="====")d+=" =";जो तीन बाइट्स बचाता है
Spikatrix

तुम सही हो। मैं वास्तव में आपके सुझाव के लिए इस धन्यवाद से 4 बाइट्स निचोड़ने में कामयाब रहा।
ईसीएस

1

एसएएस, 117 119

macro a array a[0:1]$4('#   ' '####');do x=1 to 2+2*&x-1;t=repeat(a[mod(x,2)],&y-1);put t $char%%eval(&y*3). '#';end;%

उदाहरण:

%let x=4;
%let y=4;
data;a;run;

परिणाम:

#############
#   #   #   #
#############
#   #   #   #
#############
#   #   #   #
#############
#   #   #   #
#############

क्या कोई ऑनलाइन संकलक है जहां मैं यह परीक्षण कर सकता हूं? BTW, आपके परिणाम के अनुसार, आपका प्रोग्राम गलत आउटपुट उत्पन्न करता है। आउटपुट 2 देखें: प्रत्येक बॉक्स में तीन क्षैतिज स्थान होना चाहिए
स्पिकैट्रिक्स

@CoolGuy, आप सही कह रहे हैं, मैंने ऐसा नहीं पकड़ा, मेरी पोस्ट को अपडेट किया। आप एसएएस ऑन डिमांड की कोशिश कर सकते हैं , अपने एडब्ल्यूएस इंस्टेंस
फ्राइड एग

आपका पहला लिंक मेरे लिए काम नहीं करता है। क्रोम देता हैDNS_PROBE_FINISHED_NXDOMAIN
Spikatrix

यह एक कोशिश करें, हालांकि पहला लिंक मेरे लिए SAS ऑन डिमांड पर ठीक काम करता है या इस पेज के लिंक को यहां 'कंट्रोल सेंटर' पर फॉलो करें
Fried Egg

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