अपने अध्यक्ष को समायोजित करें


18

चुनौती

आपने बस एक नई कुर्सी खरीदी है! समस्या यह है कि आपके पास इसे नियंत्रित करने का कोई विचार नहीं है, इसलिए आपको इसे करने के लिए एक कार्यक्रम लिखने की आवश्यकता होगी।

एक समायोज्य कुर्सी का उदाहरण

आप केवल इतने लंबे समय के लिए अनुचित कुर्सी पर बैठ सकते हैं। तो आपके कोड को जितना संभव हो उतना छोटा होना होगा।

उदाहरण

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

सीट: सीट चौड़ाई की राशि _है , आर्मरेस्ट के लिए बीच में डालें ।|

__|__

आर्मरेस्ट: की राशि |है आर्मरेस्ट ऊंचाई । इसे सीट के बीच में डाला जाना चाहिए।

_
|
|

पैर: की राशि लेग हाइट| द्वारा निर्धारित की जाती है

|
|

पहिए: पहिए पैरों के नीचे केंद्रित हैं। यदि वे एक से अधिक हैं, तो केंद्र पहिया _उनके ऊपर की रेखा में होना चाहिए ।

_ _
OOO

उत्पादन

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


तीसरा परीक्षण मामला गलत प्रतीत होता है। सीट दूर 2. से अधिक है चौड़ाई
दरवाज़े

@Doorknob ops वूप्स, कि इनपुट ऑर्डर के साथ एक समस्या थी, मैंने इसे ठीक कर दिया है।
डाउनगेट

"हवाई जहाज" एक मुझे सुपर मारियो ब्रोस 3 से इन टैंकों की बहुत याद दिलाता है ।
एलेंडिया स्टट्रान

जवाबों:


2

LabVIEW, 146 LabVIEW आदिम

इससे बहुत बड़ा मुझे कल्पना से अधिक ...

इस बार GIF नहीं होगा, एक तरफ दूसरी ओर आकार होने के कारण क्योंकि कोई भी तरीका नहीं है कि कोई भी सभी डेटा प्रवाह का अनुसरण कर सके।

यह तब तक काम करता है, जब तक आपको LabVIEW नहीं मिलता है और एक फ़ाइल होस्ट करने वाले का सुझाव है कि हालांकि जांच करने का कोई तरीका नहीं होगा।


9

जावास्क्रिप्ट (ईएस 6), 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

जावास्क्रिप्ट (ईएस 6), 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।
user81655

1

SpecBAS - 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

अब जब SpecBAS ?इसके बजाय उपयोग करने की अनुमति देता है PRINTऔर LETचर असाइनमेंट से पहले इसकी आवश्यकता नहीं होती है , तो यह गोल्फ में थोड़ा बेहतर होने लगता है।

यह भी मदद करता है कि आप बहुत सी रिक्ति के बाहर काम करने से बचने के लिए y, x प्रिंट स्थिति निर्दिष्ट कर सकते हैं। यह पीठ, सीट, हाथ और पैर फिर पहियों को प्रिंट करता है।

संपादित करें:

पीठ को प्रिंट करने के लिए, 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.