टेफ्लॉन के रूप में चिकना


10

सचमुच! 6 अप्रैल को नेशनल टेफ्लॉन डे है , जिसे टेफ्लॉन कोटेड पैन (जिसे हम बना रहे हैं) के साथ मनाया जाता है। इसलिए, एक सकारात्मक पूर्णांक दिया जाता है n, एक टेफ्लॉन पैन बनाएं। पैन का "पैन" खंड एक अष्टकोण है जिसके प्रत्येक पक्ष में nवर्ण होते हैं, जो इस आधार पर अलग-अलग होगा कि यह चरित्र का उपयोग करने वाले पक्षों के अलावा है {या नहीं }। उन पक्षों में हमेशा एक की लंबाई होगी। यदि n1 है:

  _
 / \
{   }
 \_/

आप देख सकते हैं, हर तरफ एक चरित्र के होते हैं (या तो {, }, /, \, या _)। यदि n2 है:

   __
  /  \
 /    \
{      }
 \    /
  \__/

हैंडल n+3 =एक शून्य और ( 0) के साथ बनाया जाएगा ।


यदि nएक है:

  _
 / \
{   }====0
 \_/

n 2 है:

   __
  /  \
 /    \
{      }=====0
 \    /
  \__/  

n 3 है:

    ___
   /   \
  /     \
 /       \
{         }======0
 \       /
  \     /
   \___/  

यदि n4 है:

     ____
    /    \
   /      \
  /        \
 /          \
{            }=======0
 \          /
  \        /
   \      /
    \____/  

नियम और मानदंड

  • कोई खामियों की अनुमति नहीं है

  • हैंडल दाहिने हाथ की ओर ( }चरित्र का बना हुआ पक्ष ) निकलता है

  • इनपुट एक सकारात्मक पूर्णांक है

  • पक्ष से मिलकर नहीं है, तो या तो {या }(नहीं बाईं या दाईं ओर), वे शामिल होंगे nसंबंधित पात्रों:

                _
               / \
    Left side {   } Right side
               \_/
    
  • चूंकि यह , सबसे छोटा कोड जीतता है!

क्या आप अधिक परीक्षण मामलों को जोड़ सकते हैं?
xnor

@xnor ने दो और जोड़े
एंथनी फाम

N = 3 और n = 4 के परीक्षण मामलों में शीर्ष या निचले किनारों पर वर्णों की सही संख्या नहीं है
fnnttk

@ f @nəˈtɪk धन्यवाद! यह तय किया गया है
एंथनी फाम

क्या मैं घुंडी के Oबदले ले सकता हूं 0?
टाइटस

जवाबों:


9

चारकोल ,  41 38 36 30 28 बाइट्स

@ बइमान को दो बाइट बचाने में मदद करने के लिए धन्यवाद, @ ASCII- केवल छह बाइट बचाने के लिए धन्यवाद, और एक और दो बाइट बचाने के लिए @ निएल को धन्यवाद!

Nη↙η↑←×_η↖η↗{↗η×_η↓↘η}×=⁺³η0

इसे ऑनलाइन आज़माएं!

स्पष्टीकरण:

Nη                 // Take the size of the pan as input.
↙η                 // Draw a line of η '\'s going down to the left.
↑←×_η              // Move one step up and print η underscores to the left.
↖η↗{↗η             // Print a line of η '\'s going up to the left.
                   // Then move one step north-east and print '{'.
                   // Then print a line of η '/'s going up to the right.
×_η↓               // Print '_' η times and move one step down.
↘η}                // Draw a line of η '\'s going down to the right, then print '}'.
×=⁺³η              // Print '=' η+3 times.
0                  // Print '0'

1
आप चारकोल में प्रारंभिक बिंदु के बाईं ओर ले जा सकते हैं आप नहीं कर सकते? यदि ऐसा है, तो हैंडल की नोक पर शुरू करके पहले से ही मुद्रित स्थान को पीछे करने के लिए कुछ बाइट्स को सहेजना चाहिए।
एमिगा

@Emigna धन्यवाद, मुझे नहीं पता था कि। मैंने पहले कभी चारकोल का इस्तेमाल नहीं किया था।
स्टेडीबॉक्स

1
@Steadybox 30 बाइट्स:Nη↖ηG←η_↙↙η{↓↘ηM↑×η_↗η}×⁺³η=P0
केवल

1
28 बाइट्स: Nη↙η↑←×_η↖η↗{↗η×_η↓↘η}×=⁺³η0(1 बाइट पैन के निचले आधे भाग को प्रिंट करके पहले अनावश्यक और 1 बाइट को बचाकर अनावश्यक ×बनाने के मापदंडों को उलट कर बचाया जाता है ।)
नील

7

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

f=
n=>(r=s=>s[0][0].repeat(n-1)+s)`  `+r`_
`+r` `.replace(/ /g," $'/$' $`$`$`\\\n")+`{`+r` `+r` `+r` }`+r`====0`+r` `.replace(/ /g,"\n $`\\$` $'$'$'/").replace(/ +\/$/,r`_/`)
<input type=number min=1 oninput=o.textContent=f(this.value)><pre id=o>

पूरा पिज़्ज़ा पैन बहुत ही दोहराव वाला होता है, इसलिए r फंक्शन (एक टैग किए गए टेम्प्लेट शाब्दिक के रूप में डिज़ाइन किया गया) इसके इनपुट के पहले चरित्र को n बार दोहराता है। यह पैन के शीर्ष और मध्य और रेखाओं को संभालता है। बाकी को रिक्त स्थान की एक स्ट्रिंग को बदलकर दोहराया जाता है; $`और $'subsitutions स्वचालित रूप से बढ़ रही है और रिक्त स्थान की संख्या कम हो रही इस प्रकार की स्थिति के अनुरूप /और \उचित रूप से। अंत में _s अंतिम पंक्ति में भरे हुए हैं क्योंकि यह उस संबंध में दूसरी पंक्ति से अलग है।


7

जावास्क्रिप्ट + HTML, 575 बाइट्स (केवल 451 बाइट्स JS) 376 बाइट्स (482 बाइट्स केवल JS)

y=document,y.y=y.getElementById,a=(b,c)=>{w="";for(z=0;z<b;z++)w+=c;return w},d=_=>{n=Number(y.y("n").value);s="";u=" ";j="<br>",m="\\",o="/";for(i=-2;i<=2*n;i++)-2==i?s+=a(n+1,u)+a(n,"_")+j:i<n-1?s+=a(n-i-1,u)+o+a(2*(i+1)+n,u)+m+j:i==n-1?s+="{"+a(3*n,u)+"}"+a(n+3,"=")+"0"+j:i+1==2*n?s+=a(n,u)+m+a(n,"_")+o:i+1<2*n&&(s+=a(i-n+1,u)+m+a(5*n-2*i-2,u)+o+j);y.y("p").innerHTML=s};
<input type="number" id='n'><button onclick='d()'>Do</button><p id='p' style='font-family:monospace;'></p>

एक जटिल दृष्टिकोण नहीं: पैन के पांच अलग-अलग हिस्सों के लिए शर्तों का उपयोग करते हुए कई स्ट्रिंग समवर्ती: ऊपरवाला, सबसे निचला और मध्य रेखा और ऊपरी और निचले हिस्से।

मैंने जितना संभव हो उतना छोटा किया, लेकिन यह इस पद्धति की सीमा थी।

संपादित करें: यह @ प्रोग्रामर 5000 द्वारा अतिरिक्त रूप से तैयार नहीं किया गया था


शानदार पहला जवाब! प्रोग्रामिंग पहेलियाँ और कोड गोल्फ में आपका स्वागत है!
एंथनी फाम

क्या यह महान था? मेरा मतलब है, इसे बनाने में बहुत अधिक समय लगा, जितना होना चाहिए था और वास्तव में कम नहीं है - लेकिन फिर भी धन्यवाद!
ज़ोल्टन श्मिट

आपको जावास्क्रिप्ट के लिए गोल्फ टिप्स पर सवाल पर जाना चाहिए
एंथनी फाम

नहीं पता था कि युक्तियाँ भी हैं - धन्यवाद!
ज़ोल्टन श्मिट

2
PPCG में आपका स्वागत है। मेरे लिए कोई भी जवाब जो कुछ प्रयास दिखाता है और चुनौती को पूरा करने का एक गंभीर प्रयास एक अच्छा जवाब है और एक उत्थान का हकदार है। संकेत और युक्तियों के साथ शुभकामनाएँ। मेरा पहला टिप यह होगा कि आप उस तरह के प्रोग्रामर की तरह सोचना बंद कर दें, जिस पर आप किसी प्रोजेक्ट पर काम करना चाहते हैं और उन सभी कामों को करना शुरू कर देंगे जिनसे आप नफरत करते हैं, जब आप किसी व्यक्ति के कोड्स (एक पत्र चर, शॉर्टकट यदि स्टेटमेंट आदि) लेते हैं। ।) :)
एलपीड्रो

4

PHP, 174 बाइट्स

echo($p=str_pad)("",-$i=-1-$n=$argn),$p(_,$n,_);for(;$i++<$n;)echo$p("
",1+$a=abs($i)),$i?$p("\/"[$i<0],1+$n*3-$a*2,"_ "[$i<$n])."\/"[$i>0]:$p("{",$n*3).$p("} ",5+$n,"="). 0;

एसटीडीआईएन से इनपुट लेता है; इसे ऑनलाइन चलाएं -nRया परीक्षण करें

टूट - फूट

// first line
echo($p=str_pad)("",-$i=-1-$n=$argn),$p(_,$n,_);
// loop $i from -$n to $n
for(;$i++<$n;)echo
    $p("\n",1+$a=abs($i)),                  // 1. left padding
$i?                     // if not middle line:
    $p("\/"[$i<0],1+$n*3-$a*2,"_ "[$i<$n])  // 2. left edge and inner padding
    ."\/"[$i>0]                             // 3. right edge
:                       // else:
    $p("{",$n*3)                            // 2. left edge and inner padding
    .$p(" }",5+$n,"=")                      // 3. right edge
    . 0                                     // 4. knob
;

4

पायथन 3, 196 बाइट्स

n=int(input())
p=print
s=' '
def m(i,f,b,c=s):p(s*(n-i)+f+c*(n+2*i)+b)
p(s*n+s+'_'*n)
for i in range(n):m(i,*'/\\')
p('{'+s*n*3+'}'+'='*(n+3)+'0')
for i in range(n-1,0,-1):m(i,*'\\/')
m(0,*'\\/_')

मैंने कोड को छोटा करने के लिए कुछ चरों का उपयोग किया, लेकिन यह ज्यादातर सीधा है। यहाँ एक लंबा, अधिक पठनीय संस्करण है:

n = int(input())

def middle_part(i, first_slash, second_slash, middle_char=' '):
    print(' ' * (n-i) + first_slash + middle_char * (n + 2*i) + second_slash)

print(' ' * (n+1) + '_' * n)

for i in range(n):
    middle_part(i, '/', '\\')

print('{' + ' ' * n*3 + '}' + '=' * (n+3) + '0')

for i in range(n-1, 0, -1):
    middle_part(i, '\\', '/')

middle_part(0, '\\', '/', middle_char='_')

संपादित करें: stdin, n से पढ़ने के लिए परिवर्तित 181 → 196 बाइट्स



3

पायथन 2.7, 194 195 191 187 185 बाइट्स

n=input();s=' ';a='\\';z='/'
def m(f,b,i,c=s):print(n-i)*s+f+c*(n+2*i)+b
m(s,s,0,'_')
for i in range(n):m(z,a,i)
print'{'+s*n*3+'}'+'='*(n+3)+'0';exec"m(a,z,i);i-=1;"*(n-1);m(a,z,0,'_')

इसे ऑनलाइन आज़माएं!

इसे छोटा करने के लिए सुझावों को संपादित करने के लिए खोलें। :)

1 बाइट संपादित करें: +1 बाइट - कोड में एक त्रुटि को इंगित करने के लिए ElPedro को क्रेडिट करता है , जिसने इसे 1 बाइट लंबे समय तक बनाया है।

2 संपादित करें: -4 बाइट्स - अनावश्यक तर्क को हटाने के लिए पीयूष-रावी को श्रेय ।

संपादित करें 3: -4 बाइट्स - मैंने उसे कैसे नहीं देखा? : पी

4 संपादित करें: -2 बाइट्स - 'के साथ' \ n 'की जगह?'


ऐसा लगता है कि जब मैं स्थानीय स्तर पर कोशिश करता हूं तो मध्य रेखा के नीचे पहली पंक्ति नहीं होनी चाहिए। इसे इनपुट 4 और 3 के लिए आज़माया गया और यह गलत लग रहा है। जब तक आपके पास समीक्षा करने और समझाने या ठीक करने का समय नहीं है, तब तक अपवोट को वापस न लें। मेरे लिए बहुत मुश्किल नहीं लग रहा गलती :)
ElPedro 19

यह ElPedro को इंगित करने के लिए धन्यवाद । इसे निश्चित किया :)
Koishore Roy

2

पॉवरशेल , 165 बाइट्स

param($n)($a=' '*$n)+" "+($b='_'*$n);$n..1|%{' '*$_+"/"+' '*($n+2*$i++)+"\"};"{$($a*3)}$('='*($n+3))0";if($n-1){1..($n-1)|%{' '*$_+"\"+' '*($n+2*--$i)+"/"}};"$a\$b/"

इसे ऑनलाइन आज़माएं!

इनपुट लेता है $n, $aरिक्त स्थान $bके एक समूह के लिए , रिक्त स्थान के एक समूह के लिए सेट करता है , और स्ट्रिंग एक स्थान के साथ समेटता है। वह पाइपलाइन पर छोड़ दिया गया है।

$nनीचे से ऊपर की ओर लूप 1। यदि $n=1, यह केवल एक बार निष्पादित होगा। प्रत्येक पुनरावृत्ति हम रिक्त स्थान का एक स्ट्रिंग संयोजन करते हैं, ए /, काउंटर के साथ अधिक रिक्त स्थान $i, और ए \। उन सभी को पाइपलाइन पर छोड़ दिया गया है।

फिर संभाल, जिसके साथ मध्य भाग आता संयोग है $a*3बीच में रिक्त स्थान, और $n+3 =संकेत है, तो एक 0। वह पाइपलाइन पर छोड़ दिया गया है।

यदि $nइससे बड़ा है 1, तो $n-1सत्य है, इसलिए हम सशर्त में प्रवेश करते हैं, जहां हम पैन की तह बनाने के लिए दूसरी दिशा में लूप करते हैं। यदि $n=1, तो हमें इस भाग की आवश्यकता नहीं है कि लाइनें कैसे काम करती हैं। उन सभी को पाइपलाइन पर छोड़ दिया गया है। हम रिक्त स्थान के साथ खत्म करते हैं और $a\$b/पैन के नीचे के साथ रेखांकित करते हैं ।

पाइपलाइन से उन सभी तारों को निहितार्थ के माध्यम से भेजा जाता है Write-Outputजो उन्हें तत्वों के बीच नई रेखाओं के साथ प्रिंट करता है।


2

जावास्क्रिप्ट + एचटीएमएल - 346 बाइट्स

जावास्क्रिप्ट - 314 बाइट्स, HTML - 32 बाइट्स

function o(a){a=parseInt(a),String.prototype.r=String.prototype.repeat;c=console.log,d=" ".r(a),e="_".r(a);c(" "+d+e);for(f=a-1,g=a;f>=0;f--,g+=2)c(" ".r(f+1)+"/"+" ".r(g)+"\\");c("{ }=0".replace(" "," ".r(3*a)).replace("=","=".r(a)));for(f=0,g=3*a;f<a-1;f++,g-=2)c(" ".r(f+1)+"\\"+" ".r(g-2)+"/");c(d+"\\"+e+"/")}
<input id=n onkeyup=o(n.value)>

संयुक्त राष्ट्र के golfed

function o(sides) {

  String.prototype.r = String.prototype.repeat;
  var middle = '{ }=0',
  log = console.log,
  ss = ' '.r(sides),
  u = '_'.r(sides),
  sides = parseInt(sides);

  // top
  log(' ' + ss + u);

  // top mid
  for (var i = sides - 1, j = sides; i >= 0; i--, j += 2) {
    log(' '.r(i + 1) + '/' + ' '.r(j) + '\\');
  }

  // mid
  log('{ }=0'.replace(' ', ' '.r(sides * 3)).replace('=', '='.r(sides)));

  // bottom mid
  for (var i = 0, j = sides * 3; i < sides - 1; i++, j -= 2) {
    log(' '.r(i + 1) + '\\' + ' '.r(j - 2) + '/');
  }

  // bottom
  log(ss + '\\' + u + '/');

}
<input id="n" onkeyup="o(n.value)">


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