খুব সাধারণ ত্রিভুজ


47

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা ইতিবাচক পূর্ণসংখ্যার (স্ট্ডিন, কমান্ড লাইন, বা ফাংশন আর্গের মাধ্যমে) লাগে এবং এই ছোট্ট ত্রিভুজগুলির অনেকগুলি একত্রে টাইলযুক্ত একটি স্ট্রিং প্রিন্ট করে বা ফেরত দেয় যা তারা নির্দেশ করে:

 /\
/__\

এই একমাত্র ত্রিভুজটি যদি ইনপুট হয় তবে আউটপুট 1

যদি ইনপুট হয় 2, আউটপুট হয়

  ____
 /\  /
/__\/

যদি ইনপুট হয় 3, আউটপুট হয়

  ____
 /\  /\
/__\/__\

যদি ইনপুট হয় 4, আউটপুট হয়

  ________
 /\  /\  /
/__\/__\/

ইত্যাদি। আপনার প্রোগ্রাম অবশ্যই 2 16 - 1 = 65535 পর্যন্ত ইনপুট সমর্থন করবে ।

বিস্তারিত

  • বামতম ত্রিভুজ সর্বদা উপরের দিকে পয়েন্ট করে।
  • পিছনের জায়গাগুলি থাকতে পারে তবে অপ্রয়োজনীয় নেতৃস্থানীয় স্থান নেই।
  • Anচ্ছিক ট্রেলিং নিউলাইন থাকতে পারে।
  • দ্রষ্টব্য যে 1আউটপুটটির জন্য দুটি লাইন দীর্ঘ তবে অন্যথায় এটি তিনটি। এটি প্রয়োজন।
  • বাইটস মধ্যে সংক্ষিপ্ততম জমা জয়।

উত্তর:


32

পাইথ, 44 42

ItQpdd*\_*4/Q2)jbms<*dQhQ,c" /\ "2,\/"__\\

প্রথম লাইন:

ItQpdd*\_*4/Q2)
ItQ           )    If the input is not 1
   pdd             Print two spaces
      *\_*4/Q2     Then groups of 4 underscores, repeated input/2 times.

অন্য দুটি লাইনটি দ্বিতীয় লাইনটি অন্তর্ভুক্ত করে " /"এবং "\ "ইনপুট + 1 বার পরিবর্তিত হয় তা লক্ষ্য করে উত্পন্ন হয় এবং তৃতীয় লাইনটি একই ফ্যাশনে গঠিত "/"এবং "__\"পরিবর্তিত হয়।


158
স্ট্রাইক আউট 44 এখনও স্বাভাবিক 44 :(
অপ্টিমাইজার

4
42অবশ্যই!
mbomb007

48
@ অপ্টিমাইজার: আমি এটাকে অবিচ্ছিন্নভাবে মজাদার বলে মনে করি যে ৪৪ টির উপস্থিতির জন্য আপনার দুঃখ প্রশ্ন বা এই উত্তরের চেয়ে বেশি ভোট পেয়েছে ।
অ্যালেক্স এ 14

6
ক্রস আউট 44 চেইনের
লিও

3
@AlexA। আমি এটাকে অবিচ্ছিন্নভাবে মজাদার বলে মনে করি যে 44 টির উপস্থিতির জন্য অপ্টিমাইজারের দু: খের বিষয়ে আপনার বিনোদনটি প্রশ্ন বা এই উত্তরের চেয়ে বেশি ভোট পেয়েছে।
isaacg

24

এসকিউএল, 182 175 173 187 বাইট

এটি কখনও সংক্ষিপ্ততম হবে না এমন নয় তবে এটি এখনও স্ক্যুএলকে হ্রাস করার চেষ্টা করার জন্য মজাদার)) আমি ওরাকল ১১-এ এটি করেছি, তবে এগুলি বেসিক এসকিউএল হওয়া উচিত। [সম্পাদনা] হিসাবে উল্লেখ করা হয়েছে, আমি যখন ইনপুট = 1 বিধি প্রয়োগ করি নি - কেবল 2 টি লাইন দেখায় show এটি করার আরও ভাল উপায়ের কথা ভাবতে পারি না, তবে আমি ভি লজিকটি সংশোধন করে একটি দম্পতি বাইট সংরক্ষণ করেছি;) সময়ের আগে 2 যোগ করে পরে পুনরাবৃত্তি না করে একটি দম্পতি বাইট সংরক্ষণ করে [/ সম্পাদনা]

select decode(&i,1,'',rpad('  ',v,'____')||z)||rpad(' /',v,'\  /')||decode(y,1,'\')||z||rpad('/',v-1,'__\/')||decode(y,1,'__\')from(select 2+floor(&i/2)*4v,mod(&i,2)y,chr(10)z from dual);

[edit1] কিছু অপ্রয়োজনীয় স্পেস সরিয়ে দিয়েছে [/ edit1] [edit2] &&I কে কেবল & i তে পরিবর্তন করেছে। এটি 2 টি অক্ষর হ্রাস করে, তবে ব্যবহারকারীকে # টি ত্রিভুজ দুটি বার ইনপুট করতে বাধ্য করে ...: পিআই বুঝতে পেরেছিলাম যে আমার "ভাল কোডিং অভ্যাস" ব্যবহার করে && আমার ব্যয় হয় 2 বাইট !! ভয়!! [/ Edit2]

ব্যাখ্যা (দ্রষ্টব্য: আমি এই ব্যাখ্যায় && 1 ব্যবহার করি যাতে এটি কেবল একবার অনুরোধ জানায়, উপরের & 1 টি কোড স্পেস সংরক্ষণ করে, তবে একাধিকবার অনুরোধ করে;))

 select  -- line 1
     decode(&&1,1,'',   -- don't need line 1 if input is 1
     rpad('  ',v,'____') || z ) || -- every pair of triangles
     -- line 2
     rpad(' /',v,'\  /') ||  -- every pair of triangles
          decode(y,1,'\') || z || -- add the final triangle, input: 1,3,5 etc.
     -- line 3
     rpad('/',v-1,'__\/') ||  -- every pair of triangles
          decode(y,1,'__\')   -- add the final triangle, input: 1,3,5 etc.
from (select 2+floor(&&i/2)*4 v,   -- common multiplier. 4 extra chars for every triangle pair
             mod(&&i,2) y,  -- Flag for the final triangle (odd inputs, 1,3,5, etc)
             chr(10) z  -- CR, here to save space.
        from dual);

আউটপুট

  SQL> accept i
  1
  SQL> /

   /\
  /__\


  SQL> accept i
  2
  SQL> /

    ____
   /\  /
  /__\/


  SQL> accept i
  3
  SQL> /

    ____
   /\  /\
  /__\/__\


  SQL> accept i
  12
  SQL> /

    ________________________
   /\  /\  /\  /\  /\  /\  /
  /__\/__\/__\/__\/__\/__\/


  SQL>

1
এটি পরে স্থান সরিয়ে কাজ করবে from? যদি তা হয় তবে আপনাকে একটি বাইট সংরক্ষণ করতে হবে।
অ্যালেক্স এ।

ওহ ভাল প্রভু .. বাদাম। আমি কেবল এটি চেষ্টা করেছিলাম .. এবং তারপরে "শহরে গিয়েছিলাম" আমি কী ফাঁকা জায়গাগুলি সরিয়ে নিয়ে যেতে পারি ... ওও এই চিকারটি এখন অপঠনযোগ্য .. তবে এটি এখনও কাজ করে;) হ্যাঁ (আমি বিশ্বাস করতে পারি না যে এলিয়াসগুলি এখনও সেভাবে কাজ করে .. ওও হেহে )
Ditto

আমি সুভু গুলো গুলো গুলো গুলোকে নিয়ে! ওও এটি ছোট আকারের কাছাকাছি কোথাও নেই .. তবুও .. upvotes! ওও বাহ!
দিতো

2
আপভোটগুলি সাধারণত বোঝায় যে লোকেরা আপনার জমাটি পছন্দ করে কারণ এটি সৃজনশীল, ব্যবহৃত ভাষা অসাধারণ বা কোনও কারণ রয়েছে। আমার অভিজ্ঞতার সাথে সংক্ষিপ্ততম কোড গল্ফ উত্তরের পক্ষেও সর্বাধিক ভোট প্রাপ্ত হওয়া অস্বাভাবিক। সুতরাং যদিও এটি সংক্ষিপ্ত উত্তর নাও হতে পারে, সম্প্রদায় এটিকে একটি উত্তম বলে মনে করেছে। :)
অ্যালেক্স এ।

@ অ্যালেক্স .. শীতল, গ্রেভী :) (আমি এক্সেল এ চেষ্টা করতে হবে ... LOL)
ডিটো

11

পাইথন 2, 89 88 87 85 83 নাম দেওয়া / 81 নামবিহীন

f=lambda n:1%n*("  "+n/2*4*"_"+"\n")+(" /\ "*n)[:2+2*n]+"\n"+("/__\\"*n)[:n-~n+n%2]

(একটি বাইটের জন্য @ অর্ল্পকে ধন্যবাদ, এবং আরও তিনটির জন্য @ এক্সনোরকে ধন্যবাদ)

এটি এমন একটি ফাংশন যা কোনও ইনট নেয় এবং nসারি-সারি সারি পদ্ধতির সাহায্যে ত্রিভুজগুলি একটি স্ট্রিং হিসাবে ফেরত দেয়।

যেমন print f(10)দেয়

  ____________________
 /\  /\  /\  /\  /\  /
/__\/__\/__\/__\/__\/

প্রথম সারির পরিবর্তে (n>1)*আমরা ব্যবহার না করে 1%n*, যেহেতু 1%n0 হয় n == 1এবং 1 যদি হয় n > 1


1
আপনি একটি চরিত্রের শেভ করতে পারেন, রূপান্তর " /\\ "করতে " /\ "
orlp

এই ল্যাম্বদা পাইথন 3 তেও কাজ করে না?
mbomb007

2
@ mbomb007 সেখানে একটি তল বিভাগ আছে
Sp3000

@orlp আমাকে এখনই আরও বিভ্রান্তি যোগ করার অনুমতি দিন, তবে আমার মন্তব্য মুছে
ফেলছেন

আমি "\n".join()3 আইটেমগুলির জন্য সন্দেহজনক , এমনকি যদি তালিকাটি শর্তাধীনভাবে প্রথম উপাদানটি সরাতে ব্যবহৃত হয়। সম্ভবত কিছু b*(x+"\n")+y+"\n"+zসংক্ষিপ্ত হয়?
এক্সনোর

7

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

পথ অনেক দীর্ঘ

f=(n,z=a=>a.repeat(n/2))=>(n>1?'  '+z('____')+'\n ':' ')+z('/\\  ',w=' /'[++n&1]+'\n')+w+z('/__\\')+w

ব্যাখ্যা

ফাংশন সংজ্ঞা জন্য ফ্যাট তীর ব্যবহার। {}তবুও কোনও ব্লক নয়: ফাংশন বডিটি একটি একক অভিব্যক্তি যা প্রত্যাবর্তনের মান। f=(a,b,c)=>exprসমতুল্য

function f(a,b,c)
{
  return expr;
}

একটি একক অভিব্যক্তি ইনসাইড আপনার মত বিবৃতি ব্যবহার করতে পারবেন না ifবা var, কিন্তু

  • ডিফল্ট মান সহ প্যারামিটারগুলি স্থানীয় ভেরিয়েবল হিসাবে ব্যবহার করা যেতে পারে
  • শর্তাধীন এক্সপ্রেশন ?:পরিবর্তে ভাল কাজ করেif else
  • আপনি কমা অপারেটর ব্যবহার করে আরও কার্যকারিতা যুক্ত করতে পারেন বা অব্যবহৃত প্যারামিটার হিসাবে আরও কার্যকর করতে পারেন। এক্ষেত্রে অ্যাসাইনমেন্টটি wহ'ল ফাংশনের দ্বিতীয় (অব্যবহৃত) পরামিতিz

আমরা fফাংশনটি আবার লিখতে পারি

f = function(n) {
  var z = function(a) { // use current value of n (that changes)
    return a.repeat(n/2);
  };
  var result;
  if (n > 1) {
    result = '  ' + z('____') + '\n '; // top row if more than 1 triangle
  else
    result = ' '; // else just the blank
  ++n; // increase n, so invert even/odd
  w = ' /'[n&1]+'\n'; //  blank if n is now even, else '/' if n is now odd
  // the next rows will end in "/\" or "\  /" based on n even/odd
  result +=  z('/\\  ') + w; // offset by the blank char added before
  result += z('/__\\') + w;
  return result;
}

টেস্ট ফায়ারফক্স / Firebug কনসোলে

console.log(f(1),f(2),f(3),f(4),f(9))

আউটপুট

 /\   
/__\ 

  ____
 /\  /
/__\/

  ____
 /\  /\   
/__\/__\ 

  ________
 /\  /\  /
/__\/__\/

  ________________
 /\  /\  /\  /\  /\   
/__\/__\/__\/__\/__\ 

সুন্দরভাবে সম্পন্ন! আমি গতকাল এটি দীর্ঘ করতে চেয়ে অনেক দীর্ঘ সময় কাটিয়েছি এবং সেরাভাবে বিভিন্ন উপায়ে 109 পুনরুত্পাদন করতে পেরেছি। -8 বেশ লাফালাফি।
ডকম্যাক্স

কুল। আপনি একটি ব্যাখ্যা পোস্ট করতে পারেন? w
BadHorsie

@ ব্যাডহর্স ব্যাখ্যা যোগ করেছেন (সত্যিই,
এবার

আগ্রহের কারণেই আমি ফাঁকা স্থান ছাড়াই এটি করার চেষ্টা করেছি এবং n=>(n>1?' '+'____'.repeat(n/2)+'\n':'')+' /\\ '.repeat(n).slice(0,n*2+2-n%2)+'\n'+'/__\\'.repeat(n).slice(0,n*2+1+n%2)১১৯ টি (ইচ্ছাকৃতভাবে আপনার উত্তরটির সাথে মেলে টেমপ্লেটের স্ট্রিং ব্যবহার না করে) নিয়ে এসেছি ।
নীল

6

সিজেম, 55 53 51 বাইট

SSri:I2/4*'_*N]I1>*" /\ "I*I)2*<N"/__\\"I*I2*)I2%+<

আমি আমার পাইথন উত্তরটি পোর্ট করার চেষ্টা করেছি এবং এটি অন্যান্য সিজেএমগুলির চেয়ে কম আকারে পরিণত হয়েছিল।

মাহবুব


6

হাস্কেল 155 153 139 131 বাইট

আমি কিছুটা ভিন্ন পদ্ধতির সন্ধান পেয়েছি যা আমার আসল পদ্ধতির চেয়ে কম আকারে পরিণত হয়েছিল। আমার মূল প্রয়াসটি নীচে সংরক্ষণ করা হয়েছে। আগের মত, গল্ফিং টিপস প্রশংসা করা হয়।

m n=unlines.dropWhile(=="  ").z["  "," /","/"].foldr1 z$map t[1..n]
t n|odd n=["","\\","__\\"]
t _=["____","  /","/"]
z=zipWith(++)

গল্ফিং টিপসের জন্য নিমিকে ধন্যবাদ।


পূর্ববর্তী প্রচেষ্টা 197 179 বাইট

t n=putStr.unlines.dropWhile(all(==' ')).z(flip(++))(if odd n then["","\\","__\\"]else repeat"").z(++)["  "," /","/"].map(take(4*div n 2).cycle)$["____","\\  /","__\\/"]
z=zipWith

4
গল্ফ করার জন্য কিছু ইঙ্গিত: (mod n 2)==0হ'ল even nবা আরও ভাল ব্যবহার এবং অংশটি odd nঅদলবদল করা । হয় কারণ সব উপাদানের তালিকা দৈর্ঘ্যের দীর্ঘ নাম, যেমন সঙ্গে ফাংশন 4. বরাদ্দ সংক্ষিপ্ত নাম - তারপর ব্যবহার । আপনি কয়েকটি জায়গা খুঁজে বের করতে পারেন । thenelseconcat.take(div n 2).repeattake(4*div n 2).cyclez=zipWithz...repeat""else[...
নিমি

@ নিমি আপনার ইঙ্গিতগুলির জন্য ধন্যবাদ! সেগুলি ব্যবহার করে, আমি আমার আসল সমাধানটি 179 বাইটে গল্ফ করতে সক্ষম হয়েছি। আমার পদ্ধতির পুনর্বিবেচনা করে আমি আমার সমাধানটি 155 বাইটে হ্রাস করতে সক্ষম হয়েছি।
ankh-morpork

1
ইঙ্গিতগুলি, দ্বিতীয় খণ্ড: foldr z["","",""]হ'ল foldr1 z, কারণ ভাঁজ করার তালিকাটি কখনই খালি থাকে না। পরিবর্তে all(==' ') আপনি ==" "(<- দুটি স্পেস ইন-এর মধ্যে) ব্যবহার করতে পারেন, কারণ এটি এন = 1 এর ক্ষেত্রে খালি লাইনটি সরাতে ব্যবহৃত হয় এবং এখানে প্রথম লাইনটি রয়েছে " "। প্রথম সংজ্ঞা tএকটি একক লাইন লেখা যেতে পারে: t n|odd...
নিমি

4

সিজেম, 73 68 63 62 60 বাইট

এটি অবশ্যই কিছু গল্ফিং প্রয়োজন ...

S2*l~:I2/'_4**N]I(g*S"\\  /"'\{I2md@*@@*'/\@}:F~N"__\\/"_W<F

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা

"Print the first line:";
S2*l~:I2/'_4**N]I(g*

S2*                  "Push a string with 2 spaces.";
   l~:I              "Read and eval the input, store it in I.";
       2/            "Divide by two to get the number of top segments.";
         '_4**       "Push '____' and repeat it by the number of segments.";
              N]     "Push a newline and wrap everything in an array.";
                I(g* "Get sign(I-1) and repeat the array that often. This is a no-op
                      for I > 1 but otherwise empties the array.";

"Print the other two lines. The basic idea is to define block which takes as arguments
 a repeatable 4-character string as well as another string which only gets printed for
 even I.";
S"\\  /"'\{I2md@*@@*'/\@}:F~N"__\\/"_W<F

S                                        "Push a space.";
 "\\__/"'\                               "Push the string '\__/' and the character \.";
          {             }:F~             "Store this block in F and evaluate it.";
           I2md                          "Get I/2 and I%2 using divmod.";
               @*                        "Pull up the second argument and repeat it I%2
                                          times. This turns it into an empty string for
                                          even I.";
                 @@                      "Pull up I/2 and the 4-character string.";
                   *                     "Repeat the string I/2 times.";
                    '/\@                 "Push a / and reorder the three line parts.";
                            N            "Push a newline.";
                             "__\\/"_W<F "Call F again, with '__\/' and '__\'.";

4

জুলিয়া, 115 বাইট

n->(m=2;p=println;k=n%2>0?m+1:m;e=m<k?"":"/";t=" /\\ ";b="/__\\";if n>1 p("  "*"_"^4m)end;p(t^k*" "*e);p(b^k*e))

এটি একটি নামহীন ফাংশন তৈরি করে যা একটি পূর্ণসংখ্যা গ্রহণ করে এবং ত্রিভুজগুলি মুদ্রণ করে। এটি কল করার জন্য, এটির একটি নাম দিন f=n->(...)

অবহেলিত + ব্যাখ্যা:

function f(n)

    m = n ÷ 2                    # Number of upside down triangles
    p = println                  # Store println function to save space
    k = n % 2 > 0 ? m + 1 : m    # Number of right side up triangles
    e = m < k ? "" : "/"         # n even? End lines with a /

    # Top of the triangle
    t = " /\\ "

    # Bottom of the triangle
    b = "/__\\"

    # Print the bottoms of any upside down triangles
    # * performs string concatenation
    # ^ performs string repetition
    if n > 1
        println("  " * "_"^4m)
    end

    # Print the triangle tops (these have two trailing spaces
    # if the last triangle isn't upside down)
    println(t^k * " " * e)

    # Print the triangle bottoms
    println(b^k * e)
end

উদাহরণ আউটপুট:

julia> for i = 1:10 f(i) end
 /\  
/__\
  ____
 /\  /
/__\/
  ____
 /\  /\  
/__\/__\
  ________
 /\  /\  /
/__\/__\/
  ________
 /\  /\  /\  
/__\/__\/__\
  ____________
 /\  /\  /\  /
/__\/__\/__\/
  ____________
 /\  /\  /\  /\  
/__\/__\/__\/__\
  ________________
 /\  /\  /\  /\  /
/__\/__\/__\/__\/
  ________________
 /\  /\  /\  /\  /\  
/__\/__\/__\/__\/__\
  ____________________
 /\  /\  /\  /\  /\  /
/__\/__\/__\/__\/__\/

আমি বেশ বৌভিত যে এই এত দীর্ঘ। আমি নিশ্চিত যে গল্ফিংয়ের সুযোগসুবিধা রয়েছে তবে তারা আমার কাছে এই মুহূর্তে পরিষ্কার নয়। আপনার যদি কোনও পরামর্শ থাকে বা আপনি আরও কোনও ব্যাখ্যা চান তা আমাকে জানাবেন!


3

সিজেম, 68 62 60 বাইট

আমি যতদূর দেখতে পাচ্ছি, এটি অন্যান্য সিজেএম সমাধানের চেয়ে সম্পূর্ণ ভিন্ন পদ্ধতির। এটি অনেক গল্ফ করা যেতে পারে।

"/__\\ /\\"4/]ri:R(['/"  /"'_4*"__\\"'\L]3/R*<+zR1>SS+*\W%N*

এটি এখানে অনলাইনে চেষ্টা করুন


3

সি # 190

void f(int n){string s=(n>1)?"\n  ":"",t=" /",u = "/";bool b=true;int m=n;while(m-->0){s+=(n>1&&b&&m>0)?"____":"";t+=b?"\\":"  /";u+=b?"__\\":"/";b=!b;}Console.Write("{0}\n{1}\n{2}",s,t,u);}

Ungolfed

void f(int n)
{
string s = (n > 1) ? "\n  " : "", t = " /", u = "/";
bool b = true;
int m = n;
while(m-->0)
{
s += (n > 1 && b && m>0) ? "____" : "";
t += b ? "\\" : "  /";
u += b ? "__\\" : "/";
b = !b;
}
Console.Write("{0}\n{1}\n{2}",s,t,u);
}

1
চমৎকার কাজ! মনে রাখবেন যে whileলুপটি ব্যবহার করা আরও ভাল নয়, বরং forলুপ ব্যবহার করুন । এই ক্ষেত্রে আপনি mলুপ প্রারম্ভিককরণের জন্য সংজ্ঞা এবং b=!bশেষটি যাই হোক না কেন এটি অন্তর্ভুক্ত করে 2 বাইট সংরক্ষণ করতে পারেন । আপনি প্রতিস্থাপন করে stringএবং boolসাথে সঞ্চয়ও করতে পারেন var। আপনার কাছেও n>1ধারাগুলির আশেপাশে "()" দরকার নেই , এবং s+=অনুচ্ছেদে আপনি কোনও ক্ষুদ্রতর সার্কিট ব্যবহার করতে পারবেন &না &&কারণ ভুল হওয়ার জন্য কোনও পার্শ্ব-প্রতিক্রিয়া বা প্রাসঙ্গিকতা নেই। শেষ 1>0true
অবধি, এর

3

সি #, 257 183 বাইট

void C(int t){int i;var n="\r\n";var s="  "+string.Join("____",new string[1+t/2])+n;for(i=0;i++<=t;)s+=i%2<1?"\\ ":" /";s+=n;for(i=0;i++<=t;)s+=i%2<1?"__\\":"/";Console.WriteLine(s);}

সম্পাদনা করুন: @ ভিজুয়ালমেলনের টিপসকে ধন্যবাদ, 74 বাইট সংরক্ষণ করা

আমি জানি এটি গল্ফের সেরা ভাষা থেকে অনেক দূরে, তবে আমি প্রতিযোগিতা জয়ের চেয়ে সি # এর বিভিন্ন সূক্ষ্মতা সম্পর্কে জানতে আগ্রহী। এটি মূলত এই পাইথ উত্তরের একটি বন্দর ।

আমি ভাবছি যে লুপগুলি আরও গল্ফ করা যেতে পারে তবে আমি কীভাবে তা নিশ্চিত করতে পারছি না, তৃতীয় বিবৃতিগুলি এর মধ্যে এমবেড করা হয়েছে।

উদাহরণ (1, 2, 3, 10):

 /\   
/__\  
  ____
 /\  /
/__\/
  ____
 /\  /\ 
/__\/__\
  ____________________
 /\  /\  /\  /\  /\  /
/__\/__\/__\/__\/__\/

Ungolfed:

void C2(int t)
{
    int i;
    var n="\r\n";
    var s="  "+string.Join("____",new string[1+t/2])+n;
    for(i=0;i++<=t;)
        s+=i%2<1?"\\ ":" /";
    s+=n;
    for(i=0;i++<=t;)
        s+=i%2<1?"__\\":"/";
    Console.WriteLine(s);
}

স্ট্রিংবিল্ডাররা যখন দ্রুত এবং মনোরম, আপনি যদি কম বাইট গণনা চান s+=তবে আপনার বন্ধু। প্রকৃতপক্ষে, আপনি লুপগুলির জন্য কিছুটা আরও কমপ্যাক্ট তৈরি করতে পারেন। আনন্দ / ভয়াবহ ++এবং --অপারেটরদের মানে কি শর্তাধীন চেক কাজ অধিকাংশ কি করতে পারেন for(i=0;i++<=t;)(যদি এই চেক iচেয়ে কম হয় বা সমান t তারপর এটা বাড়তি)। আপনি int iলুপের জন্য বাইরের দিকটি সংজ্ঞায়িত করতে এবং এটি পুনরায় ব্যবহার করতে ভাল করবেন এবং যেহেতু আপনি গ্যারান্টি দিতে পারেন যে iএটি কখনই নেতিবাচক হবে না, তাই এটি সরিয়ে নেওয়া i%2==0যেতে পারে i%2<1। এই পরিবর্তনগুলির সাথে একটি উপ 200 বিট স্কোর সহজেই পাওয়া যায়।
ভিজুয়েলমেলন

1
এছাড়াও, আমি সন্দেহ করি যে আপনি এটি লিনকিপ্যাড বা অনুরূপতে লিখেছেন, কারণ অ্যাক্সেসের জন্য Enumerableসাধারণত একটি using System.Linqনির্দেশের প্রয়োজন হয় এবং আমি মনে করি যে এটি সাধারণত এই উদ্দেশ্যে যে এই জাতীয় ধারাগুলি অন্তর্ভুক্ত করা উচিত intended তবে , এই উদাহরণে কেবলমাত্র লিনকিউ প্রতিস্থাপন করা যেতে পারে var s=" "+string.Join("____",new string[1+t/2])+n;যার সাথে কোনও লিনকুই থাকে না এবং এটি বর্তমান কোডের চেয়ে ছোট;) এটি আমাদের সত্যিকারের যত্নের সাথে "নল" (এক + টি / ২) এর সাথে প্রচুর নালিক স্ট্রিংগুলিতে যোগ দেয় ____ কারণ এর আগে আমাদের অন্য "____" ফিট করার জন্য আমাদের অন্য নাল স্ট্রিং দরকার)। চলকটি n"\ r \ n" হিসাবে ঘোষিত হয়েছে।
ভিজুয়ালমেলন

দুর্দান্ত টিপস! আমি ভুলে গিয়েছিলাম যে গণনার জন্য সিস্টেমের দরকার হবে L লিনক, আমি আজকাল সবেমাত্র মনোযোগ দিই। লুপ টিপটি কার্যকর!
ট্রেন্ট

কিছুটা দেরি হলেও আপনি এর Console.Writeপরিবর্তে 4 বাইট বাঁচাতে পারবেনConsole.WriteLine
মেটোনিয়াম

2

জাভা, 185

String f(int n){int i;String s="";if(n>1){s="  ";for(i=0;i<n/2;i++)s+="____";s+='\n';}for(i=0;i<=n;)s+=i++%2<1?" /":"\\ ";s+='\n';for(i=0;i<=n;i++)s+=i%2<1?i<n?"/_":"/":"_\\";return s;}

ব্যাখ্যা

String f(int n) {
    int i;
    String s = "";
    if (n > 1) {
        s = "  ";
        for (i = 0; i < n / 2; i++) {
            s += "____";
        }
        s += '\n';
    }
    for (i = 0; i <= n; i++) {
        s += i % 2 < 1 ? " /" : "\\ ";
    }
    s += '\n';
    for (i = 0; i <= n; i++) {
        s += i % 2 < 1 ? i < n ? "/_" : "/" : "_\\";
    }
    return s;
}

2

সি # - 151 146 141 138

@ ব্যাচুসবেলের উত্তর দ্বারা অনুপ্রাণিত

string f(int n){string t="\n",s=n>1?"  "+new string('_',n/2*4)+t:"";for(var b=n<0;n-->=0;t+=b?"__\\":"/",b=!b)s+=b?"\\ ":" /";return s+t;}

Ungolfed

    string f(int n)
    {
        string t = "\n", s = n > 1 ? "  " + new string('_', n / 2 * 4) + t : "";
        for (var b = n < 0; n-- >= 0; t += b ? "__\\" : "/", b = !b)
            s += b ? "\\ " : " /";
        return s + t;
    }

1
ভাল, নিশ্চিত না যে আমি অন্যান্য উত্তরগুলিতে মন্তব্য করার আগে এটি কীভাবে মিস করেছি! ওভারলোডটি new Stringআমার কাছে নতুন! মনে হয় আপনি t=""গল্ফ করা সংস্করণটি থেকে মিস করেছেন , তবে আরও ভাল কিছু করার জন্য t"\ n" হিসাবে আরম্ভ করা হবে । তোমার সংযোজন করে বাইট দুয়েক সংরক্ষণ করতে পারবেন tযেখানে আপনি টুসকি b, "{}" এ সংরক্ষণের জন্য লুপ: t+=(b=!b)?"/":"__\\"
ভিজুয়ালমেলন

1
@ এটির tআগে আপনি যদি সংজ্ঞা দিয়ে থাকেন sএবং tস্ট্রিংয়ে যোগ করেন তবে আপনি আরও কয়েকজনকে বাঁচাতে পারবেন "\n";)
ভিজুয়ালমেলন ২২

1

প্রবেশপথ, 156 144

func f(n int){a,b,c:="  ","","";for i:=0;i<=n;i++{if i<n/2{a+="____"};if i%2<1{b+=" /";c+="/"}else{b+=`\ `;c+=`__\`}};print(a+"\n"+b+"\n"+c)}

Ungolfed:

func f(n int) {
    a, b, c := "  ", "", ""   // Initialize 3 accumulators
    for i := 0; i <= n; i++ { // For each required triangle
        if i < n/2 {          // Yay integer math
            a += "____"
        }
        if i%2 < 1 {          // Even, uneven, (are we drawing up or downslope?)
            b += " /"
            c += "/"
        } else {
            b += `\ `
            c += `__\`
        }
    }
    print(a + "\n" + b + "\n" + c)
}

এখানে একমাত্র আসল কৌশল (এবং এটি এমনকি ভাল নয়) 3 টি সংযোজক ব্যবহার করছে যাতে আমি সমাধানটি 1 লুপের নিচে রাখতে পারি।

কোডটি এখানে চালানো যেতে পারে: http://play.golang.org/p/urEO1kIjKv


c += `__\` if i<n{c+="_"}
8-28

@ মার্কডিফায়েন্ট আপডেট হয়েছে, ধন্যবাদ
ক্রিস্টোফার সল-স্টোরগার্ড

1

> <> (ফিশ) , 215 183 156 বাইট

সম্পাদনা: নোটপ্যাড ++ সিআর এর কারণে আমাকে 5 টি অতিরিক্ত বাইট দিচ্ছিল, সুতরাং সেই অনুসারে সংশোধিত গণনা

কিছুটা বেশি গল্ফড, তবে এটি এখন পর্যন্ত আমার প্রথম ফিশ প্রোগ্রাম> _ <<1 টি ত্রিভুজের জন্য ফাঁকা প্রথম লাইন না থাকার প্রয়োজনীয়তা প্রোগ্রামটির আকার দ্বিগুণ করে।

99+0{:}1=?.~~"  "oo:2,:1%-v
-1  oooo  "____"  v!?  )0:/!
" /"oa~~.?=1}:{24~/:oo
v!?)0:-1o"\"v!?)0:/!-1ooo"  /"
/v   ~o"/"oa/!
!\:0)?!;"\__"ooo1-:0)?!;"/"o1-

Http://fishlanguage.com/ এ পরীক্ষা করতে পারবেন (প্রাথমিক দৈর্ঘ্যের জন্য স্ট্যাক)

ব্যাখ্যা:

       Start with initial stack as input number
99+0   Push 18 and 0 to the top of the stack
{:}    Shift the stack to the left (wraps), copy the top value, and shift it back to the left (i.e. copy bottom of stack to the top)
1=     Check to see if the top of the stack is equal to 1, pushes 1 for true, 0 for false
?.     If top of stack is zero, skip the ., otherwise jumps to x,y coordinates on top of stack (18,0). This skips the next 8 instructions
~~     Pop the top 2 values from the stack (if they're not popped by the jump)
"  "   Push the string literal "  " onto the stack
oo     Pop the top two values of stack and output them as characters
:2,    Copy top value of stack, ad divide by 2
:1%-   Since ><> uses float division, and doesn't have >= notation, remove the decimal part (if exists)
v      Redirect pointer down
/      Redirect pointer left
:0)    Copy top of stack, and see if its greater than 0 (1 for true, 0 for false)
?!v    If top of stack is non-zero, then ! is executed, which skips the next instruction (redirect), otherwise, code is redirected
"____" Push the literal "____" to the stack
oooo   Pop the top four values of stack and output them as characters
1-     Decrement the top of the stack by 1
!/     Ignore the redirect action.
       When the loop gets to 0, it goes to next line, and gets redirected to the left.
~      Pops the top of the stack (0 counter)
42     Pushes 4 and 2 to the stack
{:}    As before, copies the bottom of the stack to the top
1=?.   Also as before, if the initial value is 1, jump to (2,4) (skipping next 4 instructions
~~     Pop 2 values from stack if these instructions haven't been skipped
ao     Push 10 onto the stack and output it as a character (LF)
"/ "oo Push the literal "/ " onto the stack and output it
://    Copies the top of the stack then redirects to the line below, which then redirects to the left
:0)    Copies top of the stack and compares if its greater than 0
?!v    If it is, redirect to next line
"\"o   Push "\" to stack, then output it as a character
1-     Decrement top value of stack
:0)?!v If loop is not greater than 0, redirect to next line
       Either mode of redirect will loop to the left, and (potentially) skip the far right redirect because of the !
ao     Push 10 to stack and output it as a character (LF)
"/"o~  Push "/" to stack, then output it as a character. Pop top value of stack (the 0 from previous loop)
v      Redirects to next line, which then redirects to the right
:0)?!; If the top of the stack is not greater than 0, terminate (;)
"\__"  Pushes "\__" to the stack
ooo    Outputs top 3 stack values as characters ("__\")
1-     Decrement top of stack by 1
:0)?!; If the top of the stack is not greater than 0, terminate (;)
"/"o   Push "/" to top of stack then output it as a character
1-     Decrement top of stack by 1
!\     Ignore the redirect

1
সুন্দর দোভাষী! তুমি কি নিজে তৈরি করেছ?
Sp3000

সামান্যও নয়। : পিআই নিজেকে ভাষা শেখানোর জন্য এবং ডিবাগ করার জন্য এটি ব্যাপকভাবে ব্যবহার করে। আমি কেবল ভাষাটি প্রায় ভাসমান দেখেছি এবং ভেবেছিলাম এটি খুব আকর্ষণীয় (এছাড়াও মার্বেলগুলি চেষ্টা করতে চাই)।
ফঙ্গয়েড

1

পার্ল 109 108 106

$i=<>;$t=join$/,$i-1?"  "."_"x($i/2)x4:(),$m.=(" /")[$_&1]||"\\ ",$b.=("/")[$_&1]||"__\\"for 0..$i;print$t

আমি মনে করি এটি আমার প্রথম গল্ফের জন্য ঠিক আছে, আমি আমার লাইনের কোডের সাথে প্রথম লাইনের জন্য ভায়েন্স বিভাগটি 1 টি ত্রিভুজ সহ নতুন লাইনের সমস্যাটি পেয়েছি।

আমি এটি সংক্ষিপ্ত করতে পারি কিনা তা এখন দেখার জন্য :)

সম্পাদনা : হোয়াইটস্পেস

সম্পাদনা করুন 2 : প্রতিস্থাপিত "\n"সঙ্গে$/

1:
 /\
/__\

4:
  ________
 /\  /\  /
/__\/__\/

1

সি 89, 150

r(p,q,n)int*p,*q;{n?printf(p),r(q,p,n-1):puts(p);}main(c,v)int**v;{c=atoi(v[1]);if(c>1)printf("  "),r("","____",c-1);r(" /","\\ ",c);r("/","__\\",c);}

একটি অবারিত সংস্করণ:

r(p, q, n) char *p, *q; {
    if(n > 0) {
        printf(p);
        r(q, p, n-1); /* swap p and q */
    } else {
        puts(p);
    }
}

main(c, v) char**v; {
    c = atoi(v[1]);
    if(c>1) {
        printf("  ");
        r("", "____", c - 1);
    }
    r(" /", "\\ ", c);
    r("/", "__\\", c);
}

আউটপুট:

$ seq 1 3 10 | xargs -n1 ./triangles
 /\
/__\
  ________
 /\  /\  /
/__\/__\/
  ____________
 /\  /\  /\  /\
/__\/__\/__\/__\
  ____________________
 /\  /\  /\  /\  /\  /
/__\/__\/__\/__\/__\/

যদি আমি প্রবেশ করি তবে স্ট্যাকটি উপচে পড়েছে 65535(তবে আপনি যদি এটি সংকলন করেন না তবে -O3!) তবে তাত্ত্বিকভাবে এটি কাজ করা উচিত ;-)

সম্পাদনা: প্রোগ্রাম এখন প্রয়োজনীয়তা পূরণ করে যে 1প্রোগ্রামটিতে পাস হলে কেবল দুটি লাইন আউটপুট করা উচিত সম্পাদনা 2:int* পরিবর্তে ব্যবহার করুনchar*


আপনি ডিক্লেয়ার পারে mainযেমন main(c,v)**v;যে কাজ করে।
এফইউজএক্সএক্সএল

আমি ভাবছিলাম যে আপনি বিশ্বব্যাপী পরিবর্তনশীল হিসাবে cবা কিছু সংরক্ষণ করতে পারছেন n, তাই আপনাকে সেই পরামিতিটি পাস করতে হবে না r()। আমি মনে করি না যে আপনার উত্তরটি মেনে চলেNote that for 1 the output is two lines long but otherwise it's three. This is required.
লেভেল রিভার সেন্ট

@FUZxxl দুর্ভাগ্যক্রমে এটি কাজ করে না :-(error: expected declaration specifiers before ‘*’ token main(c,v)**v;{
মারকডিফায়েন্ট

@ স্টিভভারিল এটি ঠিক করে দিয়েছিল তবে আমার কোডটি দীর্ঘায়িত করা দরকার। কোনও গ্লোবাল সহ সমাধানটি খুঁজে পেল না nবা cএটি সংক্ষিপ্তও।
মার্কডেফিয়ান্ট

@ মার্কডিফায়েন্ট আপনি কি পাস করতে পেরেছিলেন int**?
FUZxxl

1

সি ++ স্ট্ডলিব, 194 বাইট

string f(int n){char* p[]={"____"," /\\ ","/__\\"};int x[]={(n-n%2)*2,n*2+2-n%2,n*2+1+n%2},i,j;string s=n>1?"  ":"";for (i=n>1?0:1;i<3;s+=++i<3?"\n":"")for (j=0;j<x[i];)s+=p[i][j++%4];return s;}

পরীক্ষা প্রোগ্রাম:

#include <string>
#include <iostream>

using namespace std;

string f(int n)
{
    char* p[]={"____"," /\\ ","/__\\"};
    int x[]={(n-n%2)*2,n*2+2-n%2,n*2+1+n%2},i,j;
    string s=n>1?"  ":"";
    for (i=n>1?0:1;i<3;s+=++i<3?"\n":"")
        for (j=0;j<x[i];)
            s+=p[i][j++%4];
    return s;
}

int main(int argc, char* argv[])
{
    cout << f(10);
    return 0;
}

1

বাশ, 166 127 125 119 105 বাইট

printf -v l %$[$1/2]s;(($1%2))&&r= j=$l\ ||r=/ j=$l;echo "  ${l// /____}
${j// / /\ } $r
${j// //__\\}"$r

একটি অনুষ্ঠানে:

triangle() {
    printf -v l %$[$1/2]s;(($1%2))&&r= j=$l\ ||r=/ j=$l;echo "  ${l// /____}
${j// / /\ } $r
${j// //__\\}"$r
}

কিছু উপস্থাপনা সহ:

for i in {1..5} 10 31;do
    paste -d\  <(
        figlet -fsmall $i |
             sed 's/^/         /;s/^ *\(.\{10\}\)$/\1  /;$d'
    ) <(triangle $i)
  done

রেন্ডার করতে পারে (যদি আপনি ফলক ইনস্টল করা থাকে):

        _      
       / |    /\  
       | |   /__\
       |_|   
      ___      ____
     |_  )    /\  /
      / /    /__\/
     /___|   
      ____     ____
     |__ /    /\  /\  
      |_ \   /__\/__\
     |___/   
     _ _       ________
    | | |     /\  /\  /
    |_  _|   /__\/__\/
      |_|    
      ___      ________
     | __|    /\  /\  /\  
     |__ \   /__\/__\/__\
     |___/   
   _  __       ____________________
  / |/  \     /\  /\  /\  /\  /\  /
  | | () |   /__\/__\/__\/__\/__\/
  |_|\__/    
    _____      ____________________________________________________________
   |__ / |    /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  
    |_ \ |   /__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\
   |___/_|   

পরিবর্তে ভেরিয়েবল থেকে ইনপুট হলে 2 টি অক্ষর সংরক্ষণ করুন $1: 103

printf -v l %$[i/2]s;((i%2))&&r= j=$l\ ||r=/ j=$l;echo "  ${l// /____}
${j// / /\ } $r
${j// //__\\}"$r

লুপের মধ্যে:

for i in {1..3} {31..34};do
    [ $i == 31 ] && figlet -fsmall ...
    paste -d\  <(
        figlet -fsmall $i |
            sed 's/^/         /;s/^ *\(.\{10\}\)$/\1   /;$d'
    ) <(
        printf -v l %$[i/2]s;((i%2))&&r= j=$l\ ||r=/ j=$l;echo "  ${l// /____}
${j// / /\ } $r
${j// //__\\}"$r
    )
  done

প্রায় সমান (প্রায়) রেন্ডার করবে:

        _       
       / |     /\  
       | |    /__\
       |_|    
      ___       ____
     |_  )     /\  /
      / /     /__\/
     /___|    
      ____      ____
     |__ /     /\  /\  
      |_ \    /__\/__\
     |___/    


 _ _ _ 
(_|_|_)

    _____       ____________________________________________________________
   |__ / |     /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  
    |_ \ |    /__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\
   |___/_|    
  _______       ________________________________________________________________
 |__ /_  )     /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /
  |_ \/ /     /__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/
 |___/___|    
  ________      ________________________________________________________________
 |__ /__ /     /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  
  |_ \|_ \    /__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\
 |___/___/    
 _____ _        ____________________________________________________________________
|__ / | |      /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /\  /
 |_ \_  _|    /__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/__\/
|___/ |_|     

1
আপনার একটি ডুমুর বাস্তবায়ন কোডগলফ সম্পর্কে একটি প্রশ্ন পোস্ট করা উচিত!
সার্জিওল

1

কাঠকয়লা , 27 বাইট (নন-কেপটিং)

নন-কেপেটিং কারণ ভাষা চ্যালেঞ্জ পোস্ট করে দেয়।

FEN﹪鲫P×⁴_↗⊗¬ι↓P↘²↘⊗ι↑P↗⊗ι

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

FEN﹪鲫

nতাদের উপর দৈর্ঘ্য এবং লুপের বিকল্প বিটের একটি তালিকা তৈরি করুন।

P×⁴_

____কার্সারটি না সরিয়ে আঁকুন ।

↗⊗¬ι↓

প্রথম এবং প্রতিটি অন্যান্য ত্রিভুজটিতে বাম /দিকটি আঁকুন ।

P↘²

\কার্সারটি না সরিয়ে পাশ আঁকুন ।

↘⊗ι↑

দ্বিতীয় এবং প্রতিটি অন্যান্য ত্রিভুজটিতে, \কার্সারটি সরানোর জন্য আবার বাম দিকে আঁকুন ।

P↗⊗ι

দ্বিতীয় এবং প্রতিটি অন্যান্য ত্রিভুজটিতে, /কার্সারটি সরানো ছাড়াই ডান দিকটি আঁকুন ।


1
উত্তরগুলি আর আর প্রতিদ্বন্দ্বী হিসাবে চিহ্নিত করতে হবে না
জো কিং

1

পাওয়ারশেল , 116 95 বাইট

21 টি বাইট সংরক্ষণের জন্য মজজি এবং এএসসিআইআই-কে আপনাকে ধন্যবাদ

param($n)@("  "+"_"*4*($x=$n-shr1))[$n-eq1]
" /"+"\  /"*$x+"\"*($a=$n%2)
"/"+"__\/"*$x+"__\"*$a

এটি অনলাইন চেষ্টা করুন!

N = 1 এর জন্য খালি লাইনটি অনুমতি না দিয়ে 14 10 বাইটের মতো খেয়েছে । এই সমাধানটি পুনরাবৃত্ত কোডের ন্যূনতম পরিমাণ সহ এখন অনেক বেশি চালাক brain ব্যাঙ্কারের রাউন্ডিং এখনও আসল শয়তান।


খালি লাইনের অনুমতি নেই ???
ASCII-

@ এএসসিআইআই কেবল ওপি থেকে চতুর্থ বুলেট পয়েন্ট পড়ুন Read
ভেস্কাহ


1
@ এএসসিআইআই-কেবলমাত্র এক্স = 3বিরতি দেয় স্ট্রিং প্রতিস্থাপন হ'ল আপনি কীভাবে ব্যাঙ্কারের
গোলকে

1
@ মমজি আপনি প্রথম লাইন তৈরি করতে পারবেন না, তা নাহলে এটি 102 হবে
ASCII-

0

সি, 368 বাইট

void p(char* c){printf(c);}
int x(int s,int f){int t=0,p=s;for(int i=0;i<f;i++){if(p==1){t++;p=0;}else{p=1;}}return t;}
int main(int argc,char* argv[]){int t=atoi(argv[1]);if(t>1){p("  ");for(int i=0;i<x(0,t);i++)
{p("____");}p("\n");}for(int i=0;i<x(1,t);i++){p(" /\\ ");}if(t%2==0){p(" /");}p("\n");
for(int i=0;i<x(1,t);i++){p("/__\\");}if(t%2==0){p("/");}p("\n");}

আপনি #includeবিবৃতিগুলি গণনা করলে এটি আরও বেশি , তবে সতর্কতা থাকা সত্ত্বেও এটি জিসিসিতে সংকলিত হয়। আমি জানি এটি এখন পর্যন্ত সংক্ষিপ্ত নয়, তবে আমি এখনও পছন্দ করি যে আমি এটি সিতে করেছি I


ম্যাক্রো #define p(c)printf(c)আপনার ফাংশনের চেয়ে খাটো। আপনি ফাংশনগুলিতে রিটার্নের ধরণগুলি বাদ দিতে পারেন (এগুলিতে ডিফল্ট হয় int)। আপনি C89এই জাতীয় শৈলীতে ফাংশন সংজ্ঞায়িত করতে পারেন main(c,v)char**v;{}। এটি সংক্ষিপ্তint main(int c, char** v){}
মারকডিফায়েন্ট

0

পার্ল (সরল) 131 125 120

মোটামুটি সোজা প্রথম পাস:

$i=<>;print join"\n",$i-1?"  "."_"x(4*int($i/2)):(),join("",map{(" /","\\ ")[$_%2]}0..$i),join"",map{("/","__\\")[$_%2]}0..$i

ওহ কার স্পষ্ট ইনট প্রয়োজন?

$i=<>;print join"\n",$i-1?"  "."_"x($i/2)x4:(),join("",map{(" /","\\ ")[$_%2]}0..$i),join"",map{("/","__\\")[$_%2]}0..$i

0

প্রোলোগ, 126 বাইট

A+B:-writef(A,B).
$N:-(N>1,"  %r\n"+['____',N//2];!),(0is N/\1,T='/';T='')," %r%w\n"+['/\\  ',N/2,T],"%r%w\n"+['/__\\',N/2,T].

পছন্দ করুন $3

আরও পঠনযোগ্য:

triangle(N):-
    (   N > 1
    ->  writef("  %r\n", ['____', N//2])
    ;   true
    ),
    (   0 is N mod 2
    ->  T = '/'
    ;   T = ''
    ),
    writef(" %r%w\n", ['/\\  ', N/2, T]),
    writef("%r%w\n", ['/__\\', N/2, T]).

উদাহরণ:

?- findall(N,between(1,10,N),NN), maplist($, NN), !.
 /\  
/__\
  ____
 /\  /
/__\/
  ____
 /\  /\  
/__\/__\
  ________
 /\  /\  /
/__\/__\/
  ________
 /\  /\  /\  
/__\/__\/__\
  ____________
 /\  /\  /\  /
/__\/__\/__\/
  ____________
 /\  /\  /\  /\  
/__\/__\/__\/__\
  ________________
 /\  /\  /\  /\  /
/__\/__\/__\/__\/
  ________________
 /\  /\  /\  /\  /\  
/__\/__\/__\/__\/__\
  ____________________
 /\  /\  /\  /\  /\  /
/__\/__\/__\/__\/__\/
NN = [1, 2, 3, 4, 5, 6, 7, 8, 9|...].

0

সি #: 1 লাইন লিনকউ, 198 বাইট

string f(int n){return(n>1?"  ":"")+string.Join("\n",new[]{"____"," /\\ ","/__\\"}.Zip(new[]{(n-n%2)*2,n*2+2-n%2,n*2+1+n%2},(s,l)=>string.Join(s,new string[n+1]).Substring(0,l)).Where(x=>x.Any()));}

0

রেটিনা , ৮৮ বাইট (নন-কেপটিং)

নন-কেপেটিং কারণ ভাষা চ্যালেঞ্জ পোস্ট করে দেয়।

K`  ____¶ /\  /¶/__\/
%`....$
$+*$&
%`(.+)\1$
$1
(  (____)*)__(¶.*)  /(¶.*)/
$1$3$4
G`\S

এটি অনলাইন চেষ্টা করুন! ব্যাখ্যা:

K`  ____¶ /\  /¶/__\/

এক জোড়া ত্রিভুজ দিয়ে ইনপুটটি প্রতিস্থাপন করুন।

%`....$
$+*$&

মূল ইনপুট দ্বারা ত্রিভুজগুলি গুণ করুন।

%`(.+)\1$
$1

ত্রিভুজগুলি 2 দ্বারা ভাগ করুন।

(  (____)*)__(¶.*)  /(¶.*)/
$1$3$4

বাম-ওভার অর্ধেক ত্রিভুজটি সরান।

G`\S

এখন যদি ফাঁকা হয় তবে প্রথম লাইনটি সরান।



0

সি (জিসিসি) , 117 115 বাইট

-2 সিলিংক্যাট ধন্যবাদ।

এই সমস্ত বন্ধনীগুলি সম্ভবত কিছু কম বিশৃঙ্খলা সম্ভবত সম্ভব বলে পরামর্শ দেয়।

f(n,i,j){for(j=3-1/n;j--;puts("/"+(n%2|j>1)))for(i=0;i<n+(j<2)>>1;)printf("  %.4s"+2-j*!i++,"/__\\/\\  ____"+j*4);}

এটি অনলাইন চেষ্টা করুন!



0

05 এ বি 1 ই , 37 বাইট

≠iðð'_I2÷4*×J}„ /„\ ‚I>∍J'/…__\‚I>∍J»

এটি অনলাইনে চেষ্টা করুন বা প্রথম 10 ফলাফলগুলি যাচাই করুন

ব্যাখ্যা:

i            } # If the (implicit) input is NOT 1:
                #   i.e. 1 → 0 (falsey)
                #   i.e. 5 → 1 (truthy)
  ðð            #  Push two spaces "  "
    '_         '#  Push string "_"
      I         #  Push the input
       2÷       #  Integer-divide it by 2
                #   i.e. 5 → 2
         4*     #  And then multiply it by 4
                #   i.e. 2 → 8
           ×    #  Repeat the "_" that many times
                #   i.e. "_" and 8 → "________"
            J   #  Join everything on the stack together to a single string
                #   i.e. "  ________"
 /             # Push string " /"
   \           # Push string "\ "
               # Pair them together: [" /","\ "]
      I>        # Push the input+1
               # Extend the list to that size
                #  i.e. [" /","\ "] and 2 → [" /","\ "]
                #  i.e. [" /","\ "] and 6 → [" /","\ "," /","\ "," /","\ "]
         J      # Join the list together to a single string
                #  i.e. [" /","\ "] → " /\ "
                #  i.e. [" /","\ "," /","\ "," /","\ "] → " /\  /\  /\ "
'/             '# Push string "/"
  __\          # Push string "__\"
               # Pair them together: ["/","__\"]
       I>       # Push the input+1
               # Extend the list to that size
                #  i.e. ["/","__\"] and 2 → ["/","__\"]
                #  i.e. ["/","__\"] and 6 → ["/","__\","/","__\","/","__\"]
          J     # Join the list together to a single string
                #  i.e. ["/","__\"] → "/__\"
                #  i.e. ["/","__\","/","__\","/","__\"] → "/__\/__\/__\"
»               # Join the entire stack with a newline delimiter
                #  i.e. " /\ " and "/__\" → " /\ \n/__\"
                #  i.e. "  ________", " /\  /\  /\ " and "/__\/__\/__\"
                #   → "  ________\n /\  /\  /\ \n/__\/__\/__\"
                # (and output the result implicitly)

0

জাভা 11, 122 বাইট

n->(n>1?"  "+"_".repeat(n/2*4)+"\n":"")+" /\\ ".repeat(n).substring(0,++n*2)+"\n"+"/__\\".repeat(n).substring(0,n/2*4+n%2)

এটি অনলাইনে চেষ্টা করুন।

ব্যাখ্যা:

n->                   // Method with integer parameter and String return-type
  (n>1?               //  If the input is larger than 1:
    "  "              //   Return two spaces
    +"_".repeat(      //   Appended with "_" repeated the following amount of times:
          n/2         //    The input integer-divided by 2
             *4)      //    And then multiplied by 4
    +"\n"             //   Appended with a newline
   :                  //  Else:
    "")               //   Return nothing
  +" /\\ ".repeat(n)  //  Appended with " /\ " repeated the input amount of times
    .substring(0,     //   After which we only leave the first `x` characters, where `x` is:
      ++n             //    Increase the input by 1 first with `++n`
         *2)          //    And then multiply it by 2
                      //     i.e. For input 1, `x` becomes 4 here
                      //     i.e. For input 6, `x` becomes 14 here
  +"\n"               //  Appended with a newline
  +"/__\\".repeat(n)  //  Appended with "/__\" repeated the input amount of times
    .substring(0,     //   After which we only leave the first `y` characters, where `y` is:
      n/2             //    The input+1 integer-divided by 2
         *4           //    Then multiplied by 4
           +n%2)      //    And then the input+1 modulo-2 added
                      //     i.e. For input 1, `y` becomes 4 here
                      //     i.e. For input 6, `y` becomes 13 here
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.