টেফলন হিসাবে মসৃণ


10

আক্ষরিক! এপ্রিল। ই জাতীয় টিফ্লন দিবস , যা টিফ্লন-প্রলিপ্ত প্যানগুলি (আমরা কী তৈরি করব) দিয়ে উদযাপিত হয়। সুতরাং, একটি ধনাত্মক পূর্ণসংখ্যা দেওয়া হলে 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 এর পরীক্ষার ক্ষেত্রে শীর্ষ বা নীচের প্রান্তগুলিতে অক্ষরের সঠিক সংখ্যা নেই
fəˈnɛtɪk

@ fəˈnɛtɪk ধন্যবাদ! এটি স্থির করা হয়েছে
অ্যান্থনি ফ্যাম

আমি কি গিঁটের Oবদলে নিতে পারি 0?
তিতাস

উত্তর:


9

কাঠকয়লা ,  41 38 36 30 28 বাইট

দুটি বাইট সংরক্ষণে সহায়তা করার জন্য @ এমিগানাকে ধন্যবাদ, কেবলমাত্র ছয়টি বাইট সংরক্ষণের জন্য @ এএসসিআইআই-কে এবং অন্য দুটি বাইট সংরক্ষণের জন্য @ নীলকে ধন্যবাদ!

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
@ স্টেডিবক্স 30 বাইট:Nη↖ηG←η_↙↙η{↓↘ηM↑×η_↗η}×⁺³η=P0
ASCII-

1
২৮ বাইট: Nη↙η↑←×_η↖η↗{↗η×_η↓↘η}×=⁺³η0(প্যানের নীচের অর্ধেকটি প্রথমে অপ্রয়োজনীয় তৈরি করে 1 বাইট সংরক্ষণ করা হয়েছে ×এবং অযৌক্তিকরূপে প্যারামিটারগুলি উল্টিয়ে 1 বাইট সংরক্ষণ করা হয়েছে ))
নীল

7

জাভাস্ক্রিপ্ট (ES6), 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 স্বয়ংক্রিয়ভাবে বৃদ্ধি এবং ঐ খালি সংখ্যা কমে এইভাবে পজিশনিং মিলা /এবং \উপযুক্তভাবে। পরিশেষে _এসগুলি শেষ লাইনে পূরণ করা হবে কারণ এটি সেই ক্ষেত্রে দ্বিতীয় লাইনের চেয়ে সম্পূর্ণ আলাদা ly


7

জাভাস্ক্রিপ্ট + এইচটিএমএল, 575 বাইট (451 বাইট কেবল জেএস) 376 বাইট (482 বাইট কেবল জেএস)

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
পিপিসিজিতে আপনাকে স্বাগতম। আমার পক্ষে এমন কোনও উত্তর যা কিছু প্রচেষ্টা এবং চ্যালেঞ্জ মোকাবেলার জন্য একটি গুরুতর প্রচেষ্টা দেখায় এটি একটি ভাল উত্তর এবং একটি উত্তরের দাবিদার। ইঙ্গিত এবং টিপস দিয়ে শুভকামনা। আমার প্রথম পরামর্শটি হ'ল, আপনি যে ধরণের প্রোগ্রামার নিয়ে কোনও প্রকল্পে কাজ করতে চান এবং যে কোনও এলিস কোড গ্রহণ করার সময় আপনি যে বিষয়গুলি ঘৃণা করেন সেগুলি সবই করা শুরু করতে চান (একটি বর্ণের ভেরিয়েবল, বিবৃতি যদি শর্টকাট ইত্যাদি) ।) :)
এলপেড্রো

4

পিএইচপি, 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,*'\\/_')

কোডটি সংক্ষিপ্ত করতে আমি কয়েকটি ভেরিয়েবল ব্যবহার করেছি তবে এটি বেশিরভাগই সোজা for এখানে একটি দীর্ঘ এবং আরও পঠনযোগ্য সংস্করণ:

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='_')

সম্পাদনা: স্টিডিন, 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 বাইট - কোডটিতে একটি ত্রুটি নির্দেশ করার জন্য এলপেড্রোর কাছে ক্রেডিট , যা এটি 1 বাইট দীর্ঘতর করেছে।

সম্পাদনা 2: -4 বাইট - অযৌক্তিক যুক্তি অপসারণ করার জন্য পীযূষ-রবিতে ক্রেডিট ।

3 সম্পাদনা করুন: -4 বাইট - আমি কিভাবে এটি দেখতে পেলাম না? : P: P

সম্পাদনা 4: -2 বাইট - 'with n' এর পরিবর্তে ';'


দেখে মনে হচ্ছে মাঝারি লাইনের নীচে প্রথম লাইনটি স্থানীয়ভাবে চেষ্টা করার সময় সেখানে থাকা উচিত নয়। 4 এবং 3 ইনপুটটির জন্য এটি চেষ্টা করে দেখে মনে হচ্ছে এটি ভুল। আপনার পর্যালোচনা এবং ব্যাখ্যা করার বা ঠিক করার সময় না পাওয়া পর্যন্ত আপটোটটিকে প্রত্যাহার করতে পারবেন না। যথেষ্ট পরিশ্রমী না দেখার জন্য আমার দোষ :)
এলপেড্রো

এটা ইশারা জন্য ধন্যবাদ ElPedro । এটি স্থির করে
রেখেছেন

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 বাইট, এইচটিএমএল - 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)">


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