আপনার চেয়ার সামঞ্জস্য করুন


18

চ্যালেঞ্জ

আপনি সবেমাত্র একটি নতুন চেয়ার কিনেছেন! সমস্যাটি হ'ল, কীভাবে এটি নিয়ন্ত্রণ করতে হবে আপনার কোনও ধারণা নেই তাই এটি আপনার জন্য একটি প্রোগ্রাম লিখতে হবে need

একটি নিয়মিত চেয়ারের উদাহরণ

আপনি এতক্ষণ কেবল অযাচিত চেয়ারে বসে থাকতে পারেন। সুতরাং আপনার কোডটি যতটা সম্ভব সংক্ষিপ্ত হওয়া দরকার।

উদাহরণ

5,3,2,2,1

O
|
|
| _
| |
|_|_
  |
  |
  O

3,5,2,3,5

O
|  _
|  |
|__|__
   |
   |
 __|__
 OOOOO

2,13,1,1,13

O
|      _
|______|______
 ______|______
 OOOOOOOOOOOOO

আমিই কি কেবল এই জাতীয় বিমানটিকে বিমানের মতো মনে করি?

চেয়ার অংশ

চেয়ারের বিভিন্ন উপাদান রয়েছে:

O
|
|  <- Backrest
|  _  <- Armrest
|  |
|__|__ <- Seat
   |  
   |   <- Leg
  _|_
  OOO  <- Wheels

ইনপুট

আপনি বিভিন্ন ভেরিয়েবল দেওয়া একটি চেয়ার আউটপুট হবে।

ইনপুট নিম্নলিখিত ক্রমে হবে, সমস্ত ইনপুট ইতিবাচক পূর্ণসংখ্যার (সর্বদা 0 এর চেয়ে বড়) হবে এবং সর্বদা সরবরাহ করা হবে।

  1. ব্যাকরেস্ট উচ্চতা
  2. আসনের প্রস্থ সর্বদা বিজোড়
  3. আর্মরেস্ট উচ্চতা সর্বদা ব্যাকরেস্ট উচ্চতার চেয়ে কম
  4. লেগ উচ্চতা
  5. চাকার গণনা সর্বদা আসনের প্রস্থের চেয়ে কম বা সমান এবং সর্বদা বিজোড়

বিস্তারিত অংশ বর্ণনা

চেয়ারের অংশগুলি হ'ল:


পিঠ: এই পরিমাণ |হয় পিঠ উচ্চতা

O
|
|

আসন: পরিমাণ _হয় আসন প্রস্থ , একটি সন্নিবেশ |Armrest জন্য মাঝখানে।

__|__

চেয়ার: পরিমাণ |হয় Armrest উচ্চতা । এটি আসনের মাঝখানে beোকানো উচিত।

_
|
|

লেগ: এর পরিমাণ লেগ উচ্চতা| দ্বারা নির্ধারিত হয়

|
|

চাকা: চাকাগুলি পায়ের নীচে থাকে। যদি তারা একের বেশি হয় তবে কেন্দ্রের চাকা ব্যতীত _অন্যগুলির উপরের লাইনে থাকা উচিত ।

_ _
OOO

আউটপুট

আউটপুটটিতে একটি পিছনের নিউলাইন থাকতে পারে। প্রতিটি লাইনের পেছনের স্থান থাকতে পারে। শীর্ষস্থানীয় হোয়াইটস্পেসের অনুমতি নেই


তৃতীয় পরীক্ষার কেসটি ভুল বলে মনে হচ্ছে। আসনের প্রস্থটি 2 এর চেয়ে অনেক বেশি
ডোরকনব

@ ডুরকনব - ওফস, এটি ইনপুট অর্ডার নিয়ে সমস্যা ছিল, আমি এটি ঠিক করেছি।
ডাউনওয়েট

"বিমান" একটি আমাকে সুপার মারিও ব্রোস 3 এর অনেকগুলি ট্যাঙ্কের স্মরণ করিয়ে দেয় ।
এল'েন্ডিয়া স্টারম্যান

উত্তর:


2

ল্যাবভিউ, 146 ল্যাবভিউ পুরষ্কার

এটি আমার কল্পনার চেয়ে অনেক বড় হয়েছে ...

অন্যদিকে আকারের কারণে এই সময় কোনও জিআইএফ থাকবে না কারণ কোনও তথ্য প্রবাহিত হওয়ার কোনও উপায় নেই।

এটি কাজ করে, যদি আপনি ল্যাবভিউ না পান এবং কোনও ফাইল হোস্টারের পরামর্শ না দিয়ে তবে চেক করার কোনও উপায় থাকবে না।


9

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

(b,s,a,l,w)=>eval('o="";for(i=0;i<b+l+2;i++)o+=(i?i>b?x[r](s/2-w/2+1)+(i>b+l?"O"[r](w):(p=(i<b+l?x:"_")[r](w/2))+"|"+p):"|"+(p=(i-b?x=" ":"_")[r="repeat"](s/2))+(i>b-a?"|":i<b-a?x:"-")+p:"O")+`\n`')

ব্যাখ্যা

ভাল এটি বরং দ্রুত বিশৃঙ্খল হয়ে উঠেছে। আমি কেবল প্রতিটি লাইন একটি উচ্চ স্তরে কী করে তা সম্পর্কে মন্তব্য করব। আশা করি এই ফর্ম্যাটিংয়ের সাথে সমস্ত তিনটি অপারেটরকে অনুসরণ করা খুব কঠিন নয়।

(b,s,a,l,w)=>
  eval(
    o="";
    for(i=0;i<b+l+2;i++)                        // for each line
      o+=(i?                                    // add to output

        // Leg lines
        i>b?
          x[r](s/2-w/2+1)                       // spaces before wheels
          +(
            i>b+l?
              "O"[r](w)                         // wheels
            :
              (p=(i<b+l?x:"_")[r](w/2))         // spaces or wheel cover before leg
              +"|"                              // leg
              +p                                // spaces or wheel cover after leg
          )

        // Backrest lines
        :
          "|"                                   // backrest
          +(p=(i-b?x=" ":"_")[r="repeat"](s/2)) // spaces or seat before armrest
          +(i>b-a?"|":i<b-a?x:"-")              // armrest
          +p                                    // spaces or seat after armrest

      // Headrest line
      :"O")
      +\`\n\`
  )

পরীক্ষা


3

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

b,s,a,l,w=input()
y,z,n,A='|_\n '
s/=2;W=w/2;x=A*s;X=n+A*(s-W+1);Y=n+y
print'O'+Y*(b-a-1)+Y+x+z+(Y+x+y)*(a-1)+n+(y+z*s)*2+(n+A+x+y)*(l-1)+X+z*W+y+z*W+X+'O'*w

উদাহরণ:

3,7,1,2,5

O
|
|   _
|___|___
    |
  __|__
  OOOOO

3

জাভাস্ক্রিপ্ট (ES6), 182

একটি বেনামে ফাংশন। টেমপ্লেট স্ট্রিং ব্যবহার করে, এখানে 3 টি নতুন লাইন রয়েছে যা বাইট গণনাতে অন্তর্ভুক্ত উল্লেখযোগ্য।

(b,s,a,l,w,R=(x=s/2,c=' ')=>c.repeat(x),f=`
`+R(s/2+1-w/2),h=R(s/2,'_'),g=R(w/2,'_'),v='|')=>'O'+R(b+~a,u=`
`+v)+u+R()+'_'+R(a-1,u+R()+v)+u+h+v+h+R(l-1,`
 `+R()+v)+f+g+v+g+f+R(w,'O')

একই উদ্দেশ্যে পুনরাবৃত্তি ব্যবহার করে কোনও লুপ নেই।

কম গল্ফড

(b, s, a, l, w, // parameters
 // local variables as parameters with default values
 R = (x=s/2,c=' ')=>c.repeat(x), // shortcut for repeat 
 f = `\n`+R(s/2+1-w/2), // filler before the wheels (used twice)
 h = R(s/2,'_'), // half seat (used twice)
 g = R(w/2,'_'), // last wheel support (used twice)
 v = '|', // vertical bar (used many times)
 u = `\n`+v // newline + bar (define below in the golfed version)
)=>
  'O'+R(b+~a, u)+  // backrest 
  u+R()+'_'+       // backrest + armrest top
  R(a-1, u+R()+v)+ // backrest + armrest
  u+h+v+h+         // seat
  R(l-1, `\n`+R()+v)+ // leg
  f+g+v+g+         // wheels support
  f+R(w, 'O')      // wheels

পরীক্ষার স্নিপেট

f=(b,s,a,l,w,R=(x=s/2,c=' ')=>c.repeat(x),f=`
`+R(s/2+1-w/2),h=R(s/2,'_'),g=R(w/2,'_'),v='|')=>'O'+R(b+~a,u=`
`+v)+u+R()+'_'+R(a-1,u+R()+v)+u+h+v+h+R(l-1,`
 `+R()+v)+f+g+v+g+f+R(w,'O')
  
console.log=x=>O.innerHTML=x+'\n'

function test()
{
  p=I.value.match(/\d+/g).map(x=>+x)
  console.log(p+'\n'+f(...p)+'\n')
}
Input <input type="text" id="I" value="5,5,3,2,3" />
<button onclick="test()">Go</button>
<pre id="O"></pre>


1
আপনার আরও বাইট ফাংশনের বডি থেকে ফাংশন পরামিতিতে থাকার জন্য +1 +
ব্যবহারকারী 81655

1

স্পেসবিএএস - 185 168 বাইট

1 INPUT b's'a'l'w: sx=(s/2)+1,wx=sx-(w/2)
2  ?"o"'("|"#13)*b
3  ?AT b,1;"_"*s;AT b+l,wx;"_"*w;AT b-a,sx;"-"
4 FOR i=b+1-a TO b+l: ?AT i,sx;"|": NEXT i
5  ?AT b+l+1,wx;"0"*w

এখন যে স্পেসবিএএস ?পরিবর্তে ব্যবহারের অনুমতি দেয় PRINTএবং LETভেরিয়েবল অ্যাসাইনমেন্টের আগে প্রয়োজন হয় না , এটি গল্ফিংয়ে কিছুটা আরও ভাল হওয়া শুরু করে।

এছাড়াও প্রচুর ব্যবধান ব্যয় না করে আপনি y, x মুদ্রণ অবস্থান নির্দিষ্ট করতে পারেন helps এটি পিছনে, সিট, বাহু এবং পায়ে চাকাগুলি মুদ্রণ করে।

সম্পাদনা করুন:

পিছনে মুদ্রণ করতে, FOR...NEXTপাইপ + দিয়ে একটি লুপ প্রতিস্থাপন করুন উচ্চতা দ্বারা গুণিত ( ("|"#13)*b)

এখানে চিত্র বর্ণনা লিখুন


1

পার্ল, 181 বাইট

+1 এর জন্য অন্তর্ভুক্ত -n। একটি ফাইল রাখুন এবংecho 5,3,2,2,1 | perl -n file.pl

($b,$s,$a,$l,$w)=/\d+/g;$,=$/;print'O',('|')x($b-$a-1),($D='|'.$"x($s/=2)).'_',("$D|")x--$a,($q='|'.'_'x$s).$q,($"x$s.' |')x--$l,($x=$"x(1+$s-($W=$w/2))).'_'x$W.'|'.'_'x$W,$x.O x$w

মন্তব্য সহ:

#!/usr/bin/perl -n              # -n: iterate stdin, put in $_

($b,$s,$a,$l,$w)=/\d+/g;        # get the parameters

$,=$/;                          # set $OUTPUT_FIELD_SEPARATOR to \n;
                                # this is printed between each of print's args

print                           # shorter than `-p` and @_=(...); $"=$/; $_="@_";
    'O',                        # the headrest

    ('|')x($b-$a-1),            # space between headrest and armrest.
                                # (...) x $n: produces $n lists.

    ($D='|' . $"x($s/=2))       # backrest and padding ($"=' ') up to armrest
    . '_',                      # armrest.

    ("$D|")x--$a,               # backrest, padding, armrest

    ($q='|' . '_'x$s) . $q,     # backrest bottom and 1/2 seat, armrest bottom and 1/2 seat

    ($" x $s . ' |' ) x --$l,   # padding before leg and leg, repeated leg-1 times

    ( $x =                     
      $" x (1+$s - ($W=$w/2) )  # padding before wheel top
    )
    . '_'x$W . '|'              # left side of wheel top, wheel top,
    . '_'x$W,                   # right side of wheel top

    $x . O x$w                  # padding before wheels, wheels
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.