नेस्टेड रेडिकल्स को ड्रा करें


13

गणित के कई सूत्रों में नेस्टेड रेडिकल्स (वर्गमूल चिह्न अन्य वर्गमूल संकेतों के अंदर) शामिल हैं। यहाँ आपका काम असिची कला का उपयोग करके इन्हें बनाना है।

ऐनक

आपको दो पूर्णांक, मूलक के अंदर की संख्या और मूलांक की संख्या दी जाएगी। मुझे लगता है कि आपको यह समझने का सबसे अच्छा तरीका है कि आपको एक उदाहरण के साथ क्या करना है। यहाँ के लिए उत्पादन है 2, 4:

        ____________________
\      /       _______________
 \    /  \    /     __________
  \  /    \  /  \  /   _____
   \/      \/    \/  \/ 2

यहां कुछ बातें ध्यान देने योग्य हैं:

  • प्रत्येक मूलांक की ऊँचाई एक से बढ़ जाती है
  • लंबाई की लंबाई _हमेशा 5ऊंचाई से होती है
  • आखिरी के बाद /और अगले आंतरिक कट्टरपंथी शुरू होने से पहले एक जगह है
  • अंदर की संख्या कभी भी 4 अंकों से अधिक नहीं होगी
  • यदि मूलांक की संख्या 0 है, तो केवल संख्या का उत्पादन करें
  • एक आयत में पैड करने के लिए अतिरिक्त स्थान रखना आपके ऊपर है
  • यह , इसलिए बाइट्स जीत में सबसे छोटा कोड है !

परीक्षण के मामलों

2, 4:
        ____________________
\      /       _______________
 \    /  \    /     __________
  \  /    \  /  \  /   _____
   \/      \/    \/  \/ 2

23, 0:
23

4, 1:
  _____
\/ 4

1234, 3:
      _______________
\    /     __________
 \  /  \  /   _____
  \/    \/  \/ 1234

12
मुझे लगता है कि अगर क्षैतिज पट्टियों को एक ही बिंदु पर समाप्त करना पड़ा तो यह थोड़ी बेहतर चुनौती होगी।
ग्रेग मार्टिन

जवाबों:


2

पायथन 3.5, 145 137 बाइट्स

def s(n,x):[([print(' '*j+'\\'+'  '*i+'/ '+' '*j,end='')for j in range(x-i-1,-1,-1)],print('  '*i+i*'_____'or n))for i in range(x,-1,-1)]

थोड़ा अपराजित:

def s(n,x):
    for i in range(x,-1,-1):
        for j in range(x-i-1,-1,-1):
            print(' '*j+'\\'+'  '*i+'/ '+' '*j,end='')
        print('  '*i+i*'_____' or n)

आउटपुट:

s(2,4)
        ____________________
\      /       _______________
 \    /  \    /     __________
  \  /    \  /  \  /   _____
   \/      \/    \/  \/ 2

print(' '*i+'_____'*i or n)7 बाइट्स बचाता है। EDIT print(' '*i+i*'_____'or n)बचाता है 8.
जोनाथन एलन

धन्यवाद। मुझे नहीं पता था कि आप इस तरह से 'या' का उपयोग कर सकते हैं।
जेम्स हॉलिस

2

जावास्क्रिप्ट, 133 132 131 बाइट्स

f=(n,r,q=r)=>~r?'1\\0/1 '[x='repeat'](d=q-r).replace(/\d/g,i=>' '[x](+i?d-=.5:r*2))+(r?' '[x](r*2)+'_'[x](5*r):n)+`
`+f(n,r-1,q):''


F=(n,r)=>console.log( f(n,r) )
F(2,4)
F(23,0)
F(4,1)
F(1234,3)
.as-console-wrapper{max-height:100%!important;top:0}


2

जावास्क्रिप्ट (ईएस 6), 124 बाइट्स

f=(s,n,i=0,r=(n,c=` `)=>c.repeat(n))=>n?r(n+n)+r(n*5,`_`)+`
`+f(s,n-1).replace(/^/gm,_=>r(i)+`\\${r(n+~i<<1)}/`+r(++i)):s+``
<div oninput=o.textContent=f(s.value,+n.value)><input id=s><input id=n type=number min=0><pre id=o>

3 बाइट्स सहेजें यदि पहला पैरामीटर एक संख्या के बजाय एक स्ट्रिंग हो सकता है।


1

PHP, 178 बाइट्स

for($r=[" $argv[1]"];$i++<$argv[2];$r[]=$p("",2*$i).$p(_,5*$i,_))for($k=-1;++$k<$i;)$r[$k]=($p=str_pad)("\\".$p("",2*$k)."/",2*$i," ",2).$r[$k];echo join("\n",array_reverse($r));

bah that aws बहुत देर तक।

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