কোড গল্ফ এবিসির: এএসসিআইআই বক্স চ্যালেঞ্জ


14

দুটি ধনাত্মক পূর্ণসংখ্যা দেওয়া হয়েছে, 'এ' এবং 'বি', একটি এসিআই-আর্ট "বাক্স" আউটপুট দেয় যা একটি অক্ষর প্রশস্ত এবং অক্ষরের লম্বা। উদাহরণস্বরূপ, '4' এবং '6' সহ:

****
*  *
*  *
*  *
*  *
****

সহজ? এখানে মোচড় দেওয়া: বাক্সের সীমানাটি অবশ্যই "এ" এবং "বি" এর অক্ষর হতে হবে। এটি উপরের বাম কোণে শুরু হয় এবং একটি ঘড়ির কাঁটা সর্পিল অবধি অবিরত। উদাহরণস্বরূপ, 4 এবং 6 সহ পূর্ববর্তী উদাহরণটি হওয়া উচিত

4646
6  4
4  6
6  4
4  6
6464

A এবং B দ্বি-সংখ্যার সংখ্যা হতে পারে। উদাহরণস্বরূপ, ইনপুটগুলি "10" এবং "3" এটিকে আউটপুট দেয়:

1031031031
1        0
3013013013

আউটপুট তুলনামূলকভাবে ছোট রাখতে, আপনাকে তিন বা ততোধিক সংখ্যার সমর্থন করতে হবে না। এছাড়াও, যেহেতু ইনপুটগুলি ধনাত্মক পূর্ণসংখ্যার মধ্যে সীমাবদ্ধ রয়েছে , '0' একটি অবৈধ ইনপুট, যা আপনাকে হ্যান্ডেল করতে হবে না।

এখানে আরও কয়েকটি পরীক্ষার মামলা রয়েছে:

Input: (3, 5)
Output:

353
5 5
3 3
5 5
353

Input: (1, 1)
Output:

1

Input: (4, 4)
Output:

4444
4  4
4  4
4444

Input: (27, 1)
Output:

271271271271271271271271271

Input: (1, 17)
Output:

1
1
7
1
1
7
1
1
7
1
1
7
1
1
7
1
1

Input: (12, 34):
Output:

123412341234
4          1
3          2
2          3
1          4
4          1
3          2
2          3
1          4
4          1
3          2
2          3
1          4
4          1
3          2
2          3
1          4
4          1
3          2
2          3
1          4
4          1
3          2
2          3
1          4
4          1
3          2
2          3
1          4
4          1
3          2
2          3
1          4
432143214321

আপনি যে কোনও যুক্তিসঙ্গত ফর্ম্যাটে ইনপুট এবং আউটপুট নিতে পারেন এবং স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ করা হয়েছে। যেহেতু এটি কোড-গল্ফ, তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর!



আমি কি নীচের দিকের বাম দিকের কোণ থেকে প্যাটার্নটি শুরু করব?
ফাঁস নুন

@ লিক্যনুন হ্যাঁ, এটি প্রয়োজনীয়।
জেমস

যদি a1 হয় তবে এটি বাম প্রাচীর বা ডান দেয়াল?
ফাঁস নুন

7
প্রথম উদাহরণটি কি ভুল নয়? (3,5) 3 চওড়া এবং 5 টি লম্বা হওয়া উচিত
ব্রায়ান

উত্তর:



4

সি #, 301 বাইট

আমি নিশ্চিত যে এখানে আরও অনেক গল্ফিং করা যেতে পারে তবে আমি কার্যকর যে একটি সমাধান পেয়েছি আমি খুশি।

আমি একটি বাগ পেয়েছি যেখানে নীচের লাইনটি ভুল ক্রমে ছিল, অভিশাপ!

a=>b=>{var s=new string[b];int i=4,c=b-2,k=a;var t="";for(;i++<2*(a+b);)t+=t.EndsWith(a+"")?b:a;s[0]=t.Substring(0,a);if(b>2){for(i=0;++i<b-1;)s[i]=(a<2?t.Substring(1,c):t.Substring(2*a+c))[c-i]+(a>1?new string(' ',a-2)+t.Substring(a,c)[i-1]:"");for(;--k>=0;)s[b-1]+=t.Substring(a+c,a)[k];}return s;};

পুরানো সংস্করণ: 280 বাইট

a=>b=>{var s=new string[b];int i=4,c=b-2;var t="";for(;i++<2*(a+b);)t+=t.EndsWith(a+"")?b:a;s[0]=t.Substring(0,a);if(b>2){for(i=0;++i<b-1;)s[i]=(a<2?t.Substring(1,c):t.Substring(2*a+c))[c-i]+(a>1?new string(' ',a-2)+t.Substring(a,c)[i-1]:"");s[b-1]=t.Substring(a+c,a);}return s;};

2

পাইথন 2, 199 বাইট

w,h=input()
s=(`w`+`h`)*w*h
r=[s[:w]]+[[" "for i in[0]*w]for j in[0]*(h-2)]+[s[w+h-2:2*w+h-2][::-1]]*(h>1)
for y in range(1,h-1):r[y][w-1],r[y][0]=s[w+y-1],s[w+h+w-2-y]
print"\n".join(map("".join,r))

2

রুবি, 128 বাইট

->w,h{s="%d%d"%[w,h]*q=w+h;a=[s[0,w]];(h-2).times{|i|a<<(s[2*q-5-i].ljust(w-1)+s[w+i,1])[-w,w]};puts a,h>1?(s[q-2,w].reverse):p}

উচ্চতা 1 হলে আউটপুটগুলি নতুন লাইনের পিছনে চলে।

আদর্শ লিঙ্ক: https://ideone.com/96WYHt


1
আপনি 4 বাইটের [w,h]*""পরিবর্তে করতে পারেন "%d%d"%[w,h], এবং আপনার চারপাশে প্রথম বন্ধনী প্রয়োজন নেই s[q-2,w].reverse, তবে তারপরে আপনার :, তাই -1 বাইটের পরে একটি স্থান প্রয়োজন ।
জর্ডান

2

জাভাস্ক্রিপ্ট, 213 212 202

c=>a=>{for(a=$=a,c=_=c,l=c*a*2,b=0,s=Array(l+1).join(c+""+a),O=W=s.substr(0,a),W=W.substr(0,a-2).replace(/./g," ");--_;)O+="\n"+s[l-c+_]+W+s[$++];return O+"\n"+[...s.substr(l-a-c+1,a)].reverse().join``}

অবশ্যই উন্নতির জন্য জায়গা আছে।

সম্পাদনা করুন: TheLethalCoder ধন্যবাদ একটি বাইট সংরক্ষণ করা


আমি মনে করি `${c}${a}`.repeat(l+1)আপনি একটি বাইট বাঁচাতে পারে।
নিল

ওহ, এবং ' W=W.substr(0,a-2).replace(/./g," ")একই হিসাবে না W=" ".repeat(a-2)? (আপনার কোডটি আসলে কাজ করে a=1?)
নিল

2

সি, 311 বাইট

char s[5];sprintf(s,"%d%d",a, b);int z=strlen(s);int i=0;while(i<a){printf("%c",s[i++%z]);}if(b>2){i=1;while(i<b-1){char r=s[(a+i-1)%z];char l=s[(2*a+2*b-i-4)%z];if(a>1){printf("\n%c%*c",l,a-1,r);}else{printf("\n%c",l);}i++;}}printf("\n");if(b>1){i=0;while(i<a){printf("%c",s[(2*a+b-i-3)%z]);i++;}printf("\n");}

ব্যবহার স্বয়ংক্রিয়ভাবে লাইব্রেরি অন্তর্ভুক্ত stdio.hএবং string.h


2

জাভাস্ক্রিপ্ট (ES6), 171 বাইট

(w,h)=>[...Array(h)].map((_,i)=>i?++i<h?(w>1?s[p+p+1-i]+` `.repeat(w-2):``)+s[w+i-2]:[...s.substr(p,w)].reverse().join``:s.slice(0,w),s=`${w}${h}`.repeat(p=w+h-2)).join`\n`

যেখানে \nআক্ষরিক নিউলাইন চরিত্রের প্রতিনিধিত্ব করে। একটি পুনরাবৃত্ত অঙ্কের স্ট্রিং তৈরি করে, তারপরে সিদ্ধান্ত নেওয়া হয় যে আমরা কোন সারিটির উপর ভিত্তি করে কী সংযুক্তি করব; শীর্ষ সারিটি কেবল পুনরাবৃত্ত অঙ্কের স্ট্রিংয়ের প্রাথমিক স্লাইস, নীচের সারি (যদি থাকে তবে) স্ট্রিংয়ের মাঝামাঝি থেকে বিপরীত স্লাইস হয়, যখন মধ্যবর্তী সারিগুলি স্ট্রিংয়ের অন্যান্য অংশ থেকে নেওয়া অক্ষর ব্যবহার করে নির্মিত হয়।


আপনি বাইট সংরক্ষণ (w,h)=>করতে পরিবর্তন করে w=>h=>
কার্চিং

0

টিএসকিউএল, 291 বাইট

Golfed:

DECLARE @ INT=5,@2 INT=4

,@t INT,@z varchar(max)SELECT @t=iif(@*@2=1,1,(@+@2)*2-4),@z=left(replicate(concat(@,@2),99),@t)v:PRINT iif(len(@z)=@t,left(@z,@),iif(len(@z)>@,right(@z,1)+isnull(space(@-2)+left(@z,1),''),reverse(@z)))SET @z=iif(len(@z)=@t,stuff(@z,1,@,''),substring(@z,2,abs(len(@z)-2)))IF @<=len(@z)goto v

Ungolfed:

DECLARE @ INT=5,@2 INT=4

,@t INT,@z varchar(max)
SELECT @t=iif(@*@2=1,1,(@+@2)*2-4),@z=left(replicate(concat(@,@2),99),@t)

v:
  PRINT
    iif(len(@z)=@t,left(@z,@),iif(len(@z)>@,right(@z,1)
      +isnull(space(@-2)+left(@z,1),''),reverse(@z)))
  SET @z=iif(len(@z)=@t,stuff(@z,1,@,''),substring(@z,2,abs(len(@z)-2)))
IF @<=len(@z)goto v

বেহালা


0

পাইথন 3, 155 148 বাইট

গল্ফড আরও 7 বাইট বন্ধ:

p=print
def f(w,h):
 s=((str(w)+str(h))*w*h)[:2*w+2*h-4or 1];p(s[:w])
 for i in range(h-2):p(['',s[-i-1]][w>1]+' '*(w-2)+s[w+i])
 p(s[1-h:1-h-w:-1])

2*w+2*h-4or 1জন্য max(1,2*w+2*h-4)এবং ['',s[-i-1]][w>1]জন্য প্রতিস্থাপিত (s[-i-1]if w>1else'')

পূর্ববর্তী সংস্করণ:

p=print
def f(w,h):
 s=((str(w)+str(h))*w*h)[:max(1,2*w+2*h-4)];p(s[:w])
 for i in range(h-2):p((s[-i-1]if w>1else'')+' '*(w-2)+s[w+i])
 p(s[1-h:1-h-w:-1])
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.