বাক্স তৈরি!


19

আপনার কাজটি দেওয়া ইনপুটগুলির সাথে সম্মান সহ যে কোনও একটি ASCII অক্ষর ব্যবহার করে বাক্স তৈরি করা।

পরীক্ষার মামলা

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

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

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

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

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

ইনপুট

  • নিম্নলিখিতগুলির মধ্যে একটি থেকে ইনপুট নেওয়া যেতে পারে

    • stdin
    • কমান্ড লাইন আর্গুমেন্ট
    • ফাংশন আর্গুমেন্ট (2 টি আর্গুমেন্ট, প্রতিটি সংখ্যার জন্য একটি)
  • ইনপুট, যদি stdinকমান্ড লাইন আর্গুমেন্ট থেকে নেওয়া বা নেওয়া হয় তবে দুটি ধনাত্মক পূর্ণসংখ্যা থাকবে, একটি স্থান দ্বারা পৃথক করে।

  • দুটি সংখ্যা প্রতিটি কলাম এবং সারিতে বাক্সের সংখ্যা বোঝায়

আউটপুট

  • বাক্সগুলি আউটপুট করতে হবে stdout(বা নিকটতম সমতুল্য)
  • প্রতিটি বাক্সের মধ্যে তিনটি অনুভূমিক স্থান থাকা উচিত

বিধি

  • উভয় সংখ্যা 0 এর চেয়ে বেশি হবে, তবে 1000 এর বেশি হবে না
  • বাক্সগুলি আউটপুট দেওয়ার জন্য যে কোনও দৃশ্যমান অক্ষর ব্যবহার করা যেতে পারে। (যতক্ষণ না তারা চোখে খুব কঠোর না হয়!)
  • আপনি একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন লিখতে অনুমতি দেওয়া হয়।
  • Anচ্ছিক ট্রেলিং নিউলাইন চরিত্র ছাড়া আর কোনও অপ্রয়োজনীয় অক্ষর থাকতে হবে না।

স্কোরিং

এটি , তাই সংক্ষিপ্ততম জমা (বাইটে) জিতেছে।

উত্তর:



10

রেটিনা , 57 বাইট

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


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

ট্রেলিং করা নতুন লাইনের সাথে আনারি ইনপুট নেয়।

প্রতিটি লাইন তার নিজস্ব ফাইলে যেতে হবে এবং #ফাইলগুলিতে নতুন লাইনে পরিবর্তন করা উচিত। এটি অযৌক্তিক তবে আপনি -sপতাকাটি সহ একটি ফাইলের মতো কোডটি চালাতে পারেন , #চিহ্নিতকারীদের রেখে (এবং ইনপুটটিতেও ট্রেলিং নিউলাইনটি পরিবর্তন #করছেন)। আপনি #যদি ইচ্ছা করেন তবে আপনি পঠনযোগ্যতার জন্য আউটপুটে নতুন লাইনে ফিরে যেতে পারেন। উদাহরণ:

> 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
@ কুরিরিয়াসননি এটিকে এভাবে তৈরি করা হয়েছিল যাতে নতুন রেখাচিত্রটি রেগেক্স এক্সপ্রেশনগুলিতে বাঁচা ছাড়াই ব্যবহারযোগ্য হবে তবে এটি আরও যুক্তিসঙ্গত 1-ফাইল ফর্ম্যাটে রূপান্তরিত করার পরিকল্পনা করা হয়েছে।
এলোমেলো

8

জাভাস্ক্রিপ্ট ( ES6 ), 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
এডক 65

7

জাভাস্ক্রিপ্ট (ES6), 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 এর সুপারিশ ব্যবহার করে Using| )


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

পাইথন 2, 58 57 বাইট

মোটামুটি সরল বাস্তবায়ন।

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

এটি এখানে দেখুন।

একটি বাইট সংরক্ষণ করার জন্য Sp3000 ধন্যবাদ।


5

জিএনইউ সেড -r, 160

দীর্ঘশ্বাস, আমি ভেবেছিলাম এটি আরও ছোট হবে তবে এখানে এটি যাইহোক। দুর্ভাগ্যক্রমে সেড রেজেক্সগুলির কোনও দৃষ্টিনন্দন ক্ষমতা নেই।

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

সিজেএম ইন্টারপ্রেটারে এটি অনলাইনে চেষ্টা করুন ।

কিভাবে এটা কাজ করে

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

সি ফাংশন, 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

পিএইচপি 4.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

পরামিতি হিসাবে এইচ এবং ডব্লু গ্রহণ করে একটি নামহীন ফাংশন প্রতিটি সারির জন্য প্রথম এবং দ্বিতীয় লাইনগুলিকে একটি ভেক্টর হিসাবে তৈরি করে এবং 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 বাইট

আমি এই একটি golfed যাবে জানি অনেক বেশি, আমি কিছু প্রস্তাবনা চাই হিসাবে এই golfing এ আমার প্রথম চেষ্টা করুন।

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

@Cool গাই প্রয়োজন এবং @ Sp3000 টিপস ধন্যবাদ, আমি শুধু নিচে আকার narrowed উপরে অর্ধেক কম।

উদাহরণস্বরূপ: d (3,3)

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

এখানে চেষ্টা করে দেখুন

পেছনের শ্বেত স্পেসগুলি ক্ষমা করুন।


1
ইন্ডেন্টেশন স্তর হ্রাস করা যেতে পারে।
স্পিক্যাট্রিক্স

3
আপনাকে তালিকা তৈরি করার দরকার নেই তারপরে যোগ দিন। স্ট্রিংগুলি গুণ করা যায়'='*(4*y+1)
Sp3000

1
সেট করা w=4*y+13 বাইট সংরক্ষণ করে।
ডিএলসাস

কুল গাই আমি 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 বাইট

আমি আশা করেছিলাম যে এটি অন্যান্য জেএস উত্তরের চেয়ে কম হবে (যথারীতি দুর্দান্ত কাজ, এডসি 65), তবে ওহ ভাল। আমার মনে হচ্ছে গণিতটি আরও গল্ফ করা যেতে পারে।

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

@ এডসি 65 এটি দুর্দান্ত, ধন্যবাদ! 2*r+1=> r-~rএর মতো জিনিসগুলি হুবহু আমি গণিতকে গল্ফ করে বোঝাতে চেয়েছিলাম এবং সেই বিশেষটি প্রতিভা। :)
ভিভি

2

অক্টেভ, 69 65 64

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

-১-এর দিকে পরিচালিত সমস্যাগুলি নির্দেশ করার জন্য ডিএলসকে ধন্যবাদ

[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রেখাকে সম্মতি জানায়, পুরো বিষয়টির পুনরাবৃত্তি করে এবং তারপরে প্রথম লাইনের আরেকটি অনুলিপি যুক্ত করে।

আমার মনে হয় আমার কাছে অনেকগুলি স্ট্যাকের হেরফের রয়েছে এবং এমনকি ভেরিয়েবলের মধ্যে প্রথম লাইনটি সঞ্চয় করে শেষ করেছি কারণ আমাকে অন্যথায় স্ট্যাকের চারপাশে জিনিসপত্র বদল করতে হয়েছিল।

সামগ্রিকভাবে খুব মার্জিত নয়, তবে আপনাকে কোথাও শুরু করতে হবে ... এবং আমি প্রথমে একটি সাধারণ সমস্যা চেষ্টা করতে চেয়েছিলাম।


আপনার +শেষের দরকার নেই। সিজেএম পুরো স্ট্যাকটি মুদ্রণ করে।
ডেনিস

2

সিজেম, 23

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 is

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);}
}

আউটপুট ভুল। দেখুন আউটপুট ": No 2 প্রতিটি বক্স তাদের মধ্যে তিন অনুভূমিক স্পেস থাকা উচিত "। আপনার কোডটি তিনটি নয়, দুটি স্পেস আউটপুট করে
স্পিকট্রিক্স

@ কুলগুয়ে এটি বিস্মৃত করেছেন - এখন আরও 2 বাইট বেশি, কিন্তু এতে খুব বেশি পরিবর্তন হয় না ...
মার্কো

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 সঙ্গে স্ট্রিং প্রতিস্থাপন।
সিশারপি

দুর্ভাগ্যক্রমে এটি অনুমোদিত নয়। এটি দেখুন
pmudra

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 এর জন্য ভুল আউটপুট তৈরি করে You
স্পিক্যাট্রিক্স

1

রুবি, 57 48 45

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

ব্যবহার:

print f[2,5]

3 বাইট সংরক্ষণের জন্য মান্যাটওয়ার্ককে ধন্যবাদ।


দুটি ছোট উন্নতির সম্ভাবনা: '='?=এবং "<LF>"$/
manatwork

আরেকটি ছোট একটি: ?=*(w*4+1)?=+?=*w*4
manatwork

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+=" =";যা তিনটি বাইট সংরক্ষণ করে
স্পিক্যাট্রিক্স

তুমি ঠিক. আপনার পরামর্শের জন্য আমি এই ধন্যবাদটির বাইরে 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;

ফলাফল:

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

এমন কোনও অনলাইন সংকলক আছে যেখানে আমি এটি পরীক্ষা করতে পারি? বিটিডাব্লু, আপনার ফলাফল অনুসারে, আপনার প্রোগ্রামটি ভুল আউটপুট উত্পাদন করে। আউটপুট 2 দেখুন: প্রতিটি বাক্সে তাদের মধ্যে তিনটি অনুভূমিক স্থান থাকা উচিত
স্পিক্যাট্রিক্স

কুলগুই, আপনি ঠিক বলেছেন, আমি এটি ধরিনি, আমার পোস্ট আপডেট করেছে। আপনি এসএএস অন ডিমান্ড চেষ্টা করতে পারেন , আপনার নিজের এডাব্লুএস ইনস্ট্যান্ট
ভাজা ডিম

আপনার প্রথম লিঙ্কটি আমার পক্ষে কাজ করে না। ক্রোম দেয়DNS_PROBE_FINISHED_NXDOMAIN
স্পিক্যাট্রিক্স

এটি ব্যবহার করে দেখুন, যদিও প্রথম লিঙ্কটি আমার পক্ষে এসএএস ডিমান্ডের জন্য সূক্ষ্মভাবে কাজ করে বা এই পৃষ্ঠার লিঙ্কটি এখানে
ফ্রাইড ডিম

কেন জানি না, তবে নিয়ন্ত্রণ কেন্দ্রে যাওয়া আমার আগের মন্তব্যে উল্লিখিত একই ত্রুটির কারণ ঘটায়: /
স্পিক্যাট্রিক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.