একটি জলের বেলুনটি পূরণ করুন


15

এই চ্যালেঞ্জে, আপনাকে অবশ্যই একটি জল বেলুনের ASCII শিল্প প্রদর্শন করতে হবে যে পরিমাণ পরিমাণ বেলুনটি ভরা হয়েছে:

|  __||__  |
| / #   #\ |
| |######| |
| |######| |
| |######| |
| |######| |
| |######| |
| \######/ |
|          |
|          |
+----------+

বেলুনটি কীভাবে আঁকবেন

আকারের একটি বেলুন প্রদর্শন করতে n, নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করুন (দ্রষ্টব্য: যখনই বিভাগ প্রতীক ( /) ব্যবহৃত হয়, এটি পূর্ণসংখ্যা বিভাগকে উপস্থাপন করে, গোল করে নিচে):

  1. |বাম এবং ডানদিকে দশটি উল্লম্ব বার ( ), -নীচে দশটি ড্যাশ ( ) এবং +নীচে বাম এবং নীচে ডান কোণে একটি প্লাস চিহ্ন ( ) সহ একটি ধারক আঁকুন । এটি পুরো জিনিসটিকে 12x11 এবং "অভ্যন্তরে" 10x10 করে তোলে।

    |          |
    |          |
    |          |
    |          |
    |          |
    |          |
    |          |
    |          |
    |          |
    |          |
    +----------+
    
  2. উপরের সারির মাঝখানে দুটি উল্লম্ব বার (বেলুনের খোলার) আঁকুন, উভয় পাশে n/2আন্ডারস্কোর ( _) উদাহরণস্বরূপ, n5 হবে:

    |  __||__  |
    |          |
    |          |
    |          |
    |          |
    |          |
    |          |
    |          |
    |          |
    |          |
    +----------+
    
  3. এই শীর্ষ সারিতে চারপাশে একটি স্ল্যাশ ( /) এবং একটি ব্যাকস্ল্যাশ ( \) আঁকুন নীচে এক সারি:

    |  __||__  |
    | /      \ |
    |          |
    |          |
    |          |
    |          |
    |          |
    |          |
    |          |
    |          |
    +----------+
    
  4. সাদৃশ্য n-ব্যবধানযুক্ত উল্লম্ব বারগুলির সারিগুলি আঁকুন , এবং তারপরে একটি সারি (এখনও অভিন্নভাবে ব্যবধানযুক্ত) ব্যাকস্ল্যাশ এবং স্ল্যাশ:

    |  __||__  |
    | /      \ |
    | |      | |
    | |      | |
    | |      | |
    | |      | |
    | |      | |
    | \      / |
    |          |
    |          |
    +----------+
    
  5. একটি হ্যাশ চিহ্ন ( #) দ্বারা প্রতিনিধিত্ব করে, বেলুনটি জল দিয়ে "পূরণ করুন" । সর্বনিম্ন সারিতে শুরু করুন এবং উপরের দিকে কাজ করুন। যদি কোনও সারি পুরোপুরি পূরণ না করা হয় তবে আপনি যেখানেই চান হ্যাশ চিহ্নগুলি রাখতে পারেন (নীচের উদাহরণে এলোমেলোভাবে স্থাপন করা হয়েছে, তবে আপনি এগুলি রাখতে পারেন, যদি আপনি চান তবে সবগুলি বাম দিকে রেখে দিন)।

    |  __||__  |
    | / #   #\ |
    | |######| |
    | |######| |
    | |######| |
    | |######| |
    | |######| |
    | \######/ |
    |          |
    |          |
    +----------+
    

সর্বোচ্চ n7, এবং সর্বনিম্ন 0 হয়।

ইনপুট

ইনপুটটি পূর্ণসংখ্যা হবে i , যা হ্যাশ চিহ্নের পরিমাণ (জল) আঁকতে হবে।

এটি কখনই 2 এর চেয়ে কম বা 100 এর বেশি হবে না।

আউটপুট

আউটপুট আকারের একটি বেলুন হওয়া উচিত nধারণকারী iহ্যাশ চিহ্ন (জল একক), যেখানে nসর্বনিম্ন সম্ভব আকার যে থাকতে পারে iপানির ইউনিট। যেহেতু iসর্বদা 2 বা তত বেশি nহবে, সর্বদা 0 বা তার চেয়ে বড় হবে।

সর্বাধিক সম্ভাব্য আকারে একটি বেলুনটি আঁকতে পারে n= 7. a

|          |
|          |
|##  #  ###|
|##########|
|##########|
|##########|
|##########|
|##########|
|##########|
|##########|
+----------+

( iউপরেরটি ইনপুট = আউটপুটের জন্য আউটপুট হতে হবে।

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

কেন একটি পরীক্ষার কেস আছে, যখন আপনি সব করতে পারেন ?

এখানে i2 থেকে 100 পর্যন্ত সমস্ত ইনপুটগুলির একটি অ্যানিমেটেড জিআইএফ রয়েছে :

2 থেকে 100 পর্যন্ত সকলের অ্যানিমেশন

স্কোরিং

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।


উত্তর:


2

অক্টাভা, 523 বাইট

এই বাইটগুলির মধ্যে 23 টি কেবল এন = 100 কেসের জন্য। সম্ভবত কেউ আরও কার্যকর উপায় প্রস্তাব করতে পারেন ...

n=input(0);x=zeros(11,6)+32;x(:,1)=124;x(11,:)=45;x(11,1)=43;
if n<5
w=3;h=2;a=2;
elseif n<7
w=3;h=3;a=2;
elseif n<17
w=4;h=4;a=4;
elseif n<37
w=5;h=6;a=6;
else
w=6;h=9;a=8;
end
if n<73
x(1,6)=124;x(1,9-w:5)=95;x(2,8-w)=47;x(3:1+h,8-w)=124;x(1+h,8-w)=92;x(2:1+h,9-w:6)=35;x=[x,fliplr(x)];x(2,5+w)=92;x(1+h,5+w)=47;x(2:1+floor((a*h-n)/a),9-w:4+w)=32;x(2+floor((a*h-n)/a),9-w+a-mod(a-n,a):4+w)=32;
else
x=[x,fliplr(x)];x(max(1,ceil((100-n)/10)):10,2:11)=35; if (n<100) x(ceil((100-n)/10),(2+mod(n,10)):11)=32; end
end
char(x)

পরীক্ষা

ইনপুট: 21

আউটপুট:

| __ || __ | |
| / \ |
| | | |
| | ### | |
| | ###### | |
| | ###### | |
| \ ###### / |
| |
| |
| |
+ + ---------- + +

2

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

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

আশা করি কোনও বড় ত্রুটি নেই।

r=[list(x)for x in ("|          |!"*10+"+----------+").split('!')]
s,t=[0]*4+[1]*2+[2]*10+[3]*4+[4]*16+[5]*6+[6]*22+[7]*8+[8]*29,[(4,2,2),(4,3,2),(3,4,4),(3,5,4),(2,6,6),(2,7,6),(1,8,8),(1,9,8),(0,9,10)]
a,b,c,d,e='|','/','\\','_','#'
def p(x,y,w):r[y][x]=w
def q(l):
 h,j,u=l
 p(5,0,a);p(6,0,a)
 for o in range(4-h):p(h+o+1,0,d);p(h+u-o,0,d)
 p(h,1,b);p(h+u+1,1,c)
 for o in range(j-2):p(h,o+2,a);p(h+u+1,o+2,a)
 p(h,j,c);p(h+u+1,j,b)
def w(i,l):
 h,j,u=l
 for o in range(i):x,y=o%u,o/u;p(h+x+1,j-y,e)
def f(i):
 n=s[i]
 l=t[n]
 if n<8:q(l)
 w(i,l)
 print "\n".join(["".join(x)for x in r])

উদাহরণ রান:

f(34)

দেয়:

|  __||__  |
| /####  \ |
| |######| |
| |######| |
| |######| |
| |######| |
| \######/ |
|          |
|          |
|          |
+----------+
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.