এএসসিআইআই মই তৈরি করুন


28

দুটি পূর্ণসংখ্যা n এবং m এর ইনপুট দেওয়া হয়েছে , দৈর্ঘ্য n এবং আকার মিটারের একটি ASCII মই আউটপুট দিন ।

এটি দৈর্ঘ্য 3 এবং আকার 3 এর একটি ASCII মই:

o---o
|   |
|   |
|   |
+---+
|   |
|   |
|   |
+---+
|   |
|   |
|   |
o---o

এটি দৈর্ঘ্য 5 এবং আকার 1 এর একটি ASCII মই:

o-o
| |
+-+
| |
+-+
| |
+-+
| |
+-+
| |
o-o

এটি দৈর্ঘ্য 2 এবং আকার 5 এর একটি ASCII মই:

o-----o
|     |
|     |
|     |
|     |
|     |
+-----+
|     |
|     |
|     |
|     |
|     |
o-----o

সুনির্দিষ্ট হতে হবে:

  • দৈর্ঘ্য ( এন ) কতগুলি স্কোয়ার দ্বারা মই গঠিত তা প্রতিনিধিত্ব করে।

  • আকার ( মি ) interior এর অভ্যন্তরের প্রস্থ এবং উচ্চতাকে উপস্থাপন করে যা "সীমানা" -চেনা বর্গ গণনা করে না।

  • প্রতিটি বর্গক্ষেত্রগুলি ভরাট করে অভ্যন্তরীণ অঞ্চল দিয়ে তৈরি হয়, -এটি উপরের এবং নীচে s দ্বারা বেষ্টিত এবং |বাম এবং ডানদিকে এবং +চারটি কোণে গুলি করে।

  • বর্গক্ষেত্রের মধ্যে সীমানা একত্রে একত্রিত হয়, সুতরাং একের সাথে এক সারিতে দুটি রেখা +--...--+একত্রিত হয়।

  • পুরো সিঁড়ির কোণগুলি অক্ষর দ্বারা প্রতিস্থাপিত হয় o

  • আপনি allyচ্ছিকভাবে একটি ট্রেলিং নিউলাইন আউটপুট করতে পারেন।

মই ( এন ) এর দৈর্ঘ্য সর্বদা ≥ 2 এবং আকার ( মি ) সর্বদা ≥ 1 হবে।

ইনপুটটি একটি সাদা স্থান- / কমা-বিচ্ছিন্ন স্ট্রিং, একটি অ্যারে / তালিকা / ইত্যাদি, বা দুটি ফাংশন / কমান্ড লাইন / ইত্যাদি হিসাবে নেওয়া যেতে পারে। আর্গুমেন্ট। আর্গুমেন্টগুলি যে কোনও ক্রমে সর্বাধিক সুবিধাজনক / গল্ফিয়াস্টে নেওয়া যেতে পারে।

যেহেতু এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

পরামর্শ: উপরের উদাহরণগুলি পরীক্ষার ক্ষেত্রেও ব্যবহার করা যেতে পারে।


আমাদের কি আগে দৈর্ঘ্য নিতে হবে, তারপরে আকার নিতে হবে?
আরকে

@RK। আপনি যে কোনও ক্রমে আরও সুবিধাজনক হিসাবে নিতে পারেন।
ডোরকনবব

1
একটি শীর্ষস্থানীয় নিউলাইন থাকতে পারে ?
কনর ও'ব্রায়ান

1
@ সিও'বউ উহহ ... আমি তার সাথে কিছু করতে যাচ্ছি না।
ডুরকনব

1
ঠিক আছে: পি এটি একটি শট মূল্য ছিল।
কনার ও ব্রায়ান

উত্তর:


4

পাইথ, 34 বাইট

.NjjNm*QTvz*2YjC:M++J"+|o"m"- -"QJ

পরীক্ষা স্যুট

STDIN এ আলাদা করে যুক্তিগুলি নতুন লাইন নেয়।

একটি সহায়ক ফাংশন ব্যবহার করে :, যা তিনটি অক্ষর থেকে প্রতিটি ধরণের উল্লম্ব স্ট্রিং তৈরি করে, তারপর প্রয়োজনীয় হিসাবে প্রতিলিপি করে, স্থানান্তর করে এবং নতুন লাইনে যোগ দেয়।


11

রুবি, 71

->m,n{h=0;(?o+?+*(n-1)+?o).chars{|c|puts [?|+' '*m+?|]*h,c+?-*m+c;h=m}}

পরীক্ষা প্রোগ্রামে ungolfed

f=->m,n{
  h=0                             #The number of | above the 1st rung is 0
  (?o+?+*(n-1)+?o).chars{|c|      #Make a string of all the rung ends o++...++o and iterate through it
    puts [?|+' '*m+?|]*h,         #draw h vertical segments |  ...  |
      c+?-*m+c                    #and a rung with the correct ends
    h=m                           #The number of | above all rungs except the 1st is m
  }
}


f[gets.to_i,gets.to_i]

গল্ফযুক্ত সংস্করণটিতে ছোটখাটো সমস্যা রয়েছে বলে মনে হচ্ছে: ;পরে প্রয়োজন, পরে h=0স্থান প্রয়োজন puts। তবে অতিরিক্ত স্কোর হওয়ার আগে আপনি কেবলমাত্র 1 টি চরিত্রের সাহায্যে স্কোর বাড়ান puts
11:25

@ মানটওয়ার্ক উফ, ধন্যবাদ, স্থির আমি জানি না কীভাবে এটি ঘটেছে, আমি অবশ্যই গল্ফ করেছিলাম এবং এটি পরে চালাতে পারি না।
স্তর নদী সেন্ট

9

সিজেম, 43 42 বাইট

আমি স্কোর দ্বারা নির্বিঘ্ন না। তবে আমি ডেনিস না, তাই না?

q~:Z;'-'o{[\Z*1$N]}:X~['-_'+X\'|XZ*]@*1>1$

ইনপুট হল 2 স্থান বিচ্ছিন্ন আইটেম। দৈর্ঘ্য প্রথম

2 3
o---o
|   |
|   |
|   |
+---+
|   |
|   |
|   |
o---o

ব্যাখ্যা

q~:Z;'-'o{[\Z*1$N]}:X~['-_'+X\'|XZ*]@*1>1$
q~                                         e# read input
  :Z;                                      e# Record the size in Z and discard
     '-'o{[\Z*1$N]}:X~                     e# Create the initial line (and final). also creates a shorcut to do this later
           \                               e# Capture two arguments
            Z*                             e# The separator is repeated size times
              1$                           e# Repeat the first argument
                N                          e# Add newline
                                           e# X is a function to create line in a ladder
                      ['-_'+X\'|XZ*]       e# Design the repeating part
                                    @*     e# Repeat the pattern n times
                                      1>   e# Discard the initial
                                        1$ e# Since the final line is same than the initial, we just write it.
                                           e# Implicit printing

1
আমি পছন্দ করি আপনি এটি একটি প্রশ্ন হিসাবে শব্দ করেছেন। "আমি ডেনিস না ... তাই না?"
আন্ডারগ্রাউন্ডোমোনাইল

7

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

... পুনরাবৃত্তি, পুনরাবৃত্তি, পুনরাবৃত্তি ...

(n,m,R=x=>x.repeat(m),b=R(`|${R(' ')}|
`),d=`o${c=R('-')}o
`)=>d+R(b+`+${c}+
`,m=n-1)+b+d

পরীক্ষা

F=(n,m,R=x=>x.repeat(m),b=R(`|${R(' ')}|
`),d=`o${c=R('-')}o
`)=>d+R(b+`+${c}+
`,m=n-1)+b+d

// Less golfed
U=(n,m)=>
{
  var R=x=>x.repeat(m),
      a=R(' '),
      b=R(`|${a}|\n`);
      c=R('-'),
      d=`o${c}o\n`;
  m=n-1;
  return d+R(b+`+${c}+\n`)+b+d
}

function test() {
  var i=I.value.match(/\d+/g)
  if (i) O.textContent=F(+i[0],+i[1])
  console.log(i,I.value)
}  
 
test()
N,M: <input id=I value="3,5" oninput=test()>
<pre id=O></pre>


আমি জানতাম না যে document.getElementById('elem').প্রতিস্থাপন করা যেতে পারে elem.! এটির জন্য +1, তবে দয়া করে আপনি কি এই সম্পর্কে কিছু ডক্স দেখিয়ে দিতে পারেন?
এফ। হাউরি

2
@ এফ.হৌরি এটি প্রায় প্রতিটি ব্রাউজারে কাজ করে তবে এড়ানো উচিত (মজা করার জন্য কোডিংয়ের ব্যতীত)। তথ্য এবং লিঙ্ক stackoverflow.com/questions/3434278/...
edc65

6

সি #, 1412 বাইট

... আমার প্রথম কোডগল্ফ প্রচেষ্টা, জয়ের সম্ভাবনা নেই তবে এটি কাজ করে তাই আমরা এখানে যাই:

using System;

namespace Ascii_Ladders
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = 0;
            int m = 0;

            Console.Write("Please enter Height: ");
            n = int.Parse(Console.ReadLine());
            Console.Write("Please Enter Width: ");
            m = int.Parse(Console.ReadLine());

            Console.Write("o");
            for (int i = 0; i < m; i++)
            {
                Console.Write("-");
            }
            Console.WriteLine("o");

            for (int k = 0; k < n; k++)
            {
                for (int i = 0; i < m; i++)
                {
                    Console.Write("|");
                    for (int j = 0; j < m; j++)
                    {
                        Console.Write(" ");
                    }
                    Console.WriteLine("|");
                }
                if (k != n - 1)
                {
                    Console.Write("+");
                    for (int i = 0; i < m; i++)
                    {
                        Console.Write("-");
                    }
                    Console.WriteLine("+");
                }
            }

            Console.Write("o");
            for (int i = 0; i < m; i++)
            {
                 Console.Write("-");
            }
            Console.WriteLine("o");

            Console.ReadKey();
        }
    }
}

9
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম! আপনার কোডটিতে আপনার প্রচুর শ্বেত স্পেস রয়েছে যা আপনার কোডটি ছোট করার জন্য আপনি মুছে ফেলতে পারেন, আপনি যদি নিজের কোডটি গল্ফ করতে আরও সহায়তা চান, আপনি সি # তে গল্ফ করার টিপসটি দেখতে পারেন ।
ডাউনওয়েট

আমি এখানে @ doᴡɴɢᴏᴀᴛ এর সাথে একমত আমি সম্ভবত 533 বাইটে এটি গল্ফ করতে সক্ষম হয়েছি । তবে এটি আরও ভাল হতে পারে। (সতর্কতা: আমি সি # তে প্রোগ্রাম করি না))
user48538

আমি এটি দিয়ে 314using System;class P{static int m;static void Main(){int n = int.Parse(Console.ReadLine());m = int.Parse(Console.ReadLine());M('o','-');for(int k=0;k<n;k++){for(int i=0;i<m;i++){M('|',' ');}if(k!=n-1){M('+','-');}}M('o','-');Console.ReadKey();}static void M(char x,char y){Console.WriteLine(x+new string(y,m)+x);}}
নামলাম

3
কয়েক স্পেস মিস করেছেন তাই 310 এর সাথেusing System;class P{static int m;static void Main(){int n=int.Parse(Console.ReadLine());m=int.Parse(Console.ReadLine());M('o','-');for(int k=0;k<n;k++){for(int i=0;i<m;i++){M('|',' ');}if(k!=n-1){M('+','-');}}M('o','-');Console.ReadKey();}static void M(char x,char y){Console.WriteLine(x+new string(y,m)+x);}}
রেডলেজার

2
নিচে 270 পদ্ধতির পরিবর্তন ছাড়া ব্যবহার করা: using C=System.Console;class P{static void Main(){int i,k,n=int.Parse(C.ReadLine()),m=int.Parse(C.ReadLine());System.Action<char,char> M=(x,y)=>C.WriteLine(x+new string(y,m)+x);M('o','-');for(k=0;k<n;k++){for(i=0;i<m;i++){M('|',' ');}if(k<n-1){M('+','-');}}M('o','-');}}। কীভাবে কিছুটা কীভাবে করা যায় তা পরিবর্তন করে এখানে খুব বেশি সম্ভাবনা রয়েছে।
জোয়

6

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

f(n,m)=(g(x)=(b=x[1:1])x[2:2]^m*b*"\n";(t=g("o-"))join([g("| ")^m for i=1:n],g("+-"))t)

এটি এমন একটি ফাংশন যা দুটি পূর্ণসংখ্যা গ্রহণ করে এবং একটি স্ট্রিং প্রদান করে।

Ungolfed:

function f(n::Int, m::Int)
    # Create a function g that takes a string of two characters and
    # constructs a line consisting of the first character, m of the
    # second, and the first again, followed by a newline.
    g(x) = (b = x[1:1]) * x[2:2]^m * b * "\n"

    # Assign t to be the top and bottom lines. Construct an array
    # of length n where each element is a string containing the
    # length-m segment of the interior. Join the array with the
    # ladder rung line. Concatenate all of this and return.
    return (t = g("o-")) * join([g("| ")^m for i = 1:n], g("+-")) * t
end

5

pb - 147 বাইট

^t[B]>>[B]vw[T!0]{b[43]<[X]b[43]>w[B=0]{b[45]>}v[X-1]w[B=0]{b[124]^}v[X]t[T-1]}t[111]b[T]<w[X!0]{b[45]<}b[T]w[Y!0]{w[B!0]{^}b[124]^}b[T]^>>[B]vb[T]

এটি সেই ধরণের চ্যালেঞ্জ যা অধিকার অনুসারে পিবিতে সত্যই ভাল হওয়া উচিত। অক্ষরগুলি সহ সাধারণ ছবি আঁকতে পিবির ঠিক ডিজাইন করা হয়েছিল। হায় আফসোস, এটি অনুমান করা মাত্র একটি শব্দযুক্ত ভাষা।

আকারের পরে প্রথমে ইনপুট দৈর্ঘ্য নেয়। বাইট মানগুলির আকারে ইনপুট নেয়, উদাহরণস্বরূপ:python -c 'print(chr(5) + chr(7))' | ./pbi.py ladder.pb

দেখুন, একটি মজাদার অ্যানিমেশন!

মন্তব্য সহ:

^t[B]            # Save length to T
>>[B]v           # Go to X=size+1, Y=0

w[T!0]{          # While T is not 0:
    b[43]            # Write a '+'
    <[X]b[43]        # Write a '+' on the left side as well
    >w[B=0]{b[45]>}  # Travel back to the right '+', writing '-' on the way
    v[X-1]           # Go down by X-1 (== size)
    w[B=0]{b[124]^}  # Travel back up to the '+', writing '|' on the way
    v[X]             # Go down by X (== size + 1, location of next '+')
    t[T-1]           # Decerement T
}

t[111]           # Save 'o' to T (it's used 4 times so putting it
                 # in a variable saves bytes)

b[T]             # Write an 'o' (bottom right)

<w[X!0]{         # While not on X=0:
    b[45]<           # Travel left, writing '-' on the way
}

b[T]             # Write an 'o' (bottom left)

w[Y!0]{          # While not on Y=0:
    w[B!0]{^}        # Skip nonempty spaces
    b[124]           # Write a '|'
    ^                # Travel up
}

b[T]             # Write an 'o' (top left, replaces existing '+')

^>>[B]v          # Go back to where the size is saved and go to X=size+1, Y=0

b[T]             # Write an 'o' (top right, replaces existing '+')

5

খাঁটি বাশ, 132 130 128 127 বাইট

হ্যাঁ আমি শেষের পরিবর্তে আরও 1 টি বাইট ফেলে দিতে পারি ${p% *}, তবে আমি এটি পছন্দ করি:

p=printf\ -v;$p a %$1s;$p b %$2s;o="|$a|\n";h=+${a// /-}+\\n v=${a// /$o}
a=${b// /$h$v}${h//+/o};a=${a/+/o};${p% *} "${a/+/o}"

নমুনা:

ladders() {
    p=printf\ -v;$p a %$1s;$p b %$2s;o="|$a|\n";h=+${a// /-}+\\n v=${a// /$o}
    a=${b// /$h$v}${h//+/o};a=${a/+/o};${p% *} "${a/+/o}"
}

ladders 3 4
o---o
|   |
|   |
|   |
+---+
|   |
|   |
|   |
+---+
|   |
|   |
|   |
+---+
|   |
|   |
|   |
o---o

ladders 2 1
o--o
|  |
|  |
o--o

4

হাস্কেল, 100 97 বাইট

l#s=unlines$t:m++[t]where _:m=[1..l]>>["+"!"-"]++("|"!" "<$u);t="o"!"-";o!i=o++(u>>i)++o;u=[1..s]

ব্যবহারের উদাহরণ:

*Main> putStr $ 4 # 3
o---o
|   |
|   |
|   |
+---+
|   |
|   |
|   |
+---+
|   |
|   |
|   |
+---+
|   |
|   |
|   |
o---o

কিভাবে এটা কাজ করে:

l#s=unlines$t:m++[t]         -- concat top line, middle part and end line
                             -- with newlines between every line
  where                      -- where
  _:m=                       -- the middle part is all but the first line of
     [1..l]>>                -- l times
         ["+"!"-"]           --    a plus-dashes-plus line
         ++("|"!" "<$u)      --    followed by s times a bar-spaces-bar line

  t="o"!"-"                  -- very first and last line
  o!i=o++(u>>i)++o           -- helper to build a line
  u=[1..s]

সম্পাদনা করুন: @ খ্রিস্টিয়ান ইরওয়ান 3 বাইট খুঁজে পেয়েছে। ধন্যবাদ!


-1 স্কোর m=init$[1..l]>>("|"!" "<$u)++["+"!"-"]=> এর জন্য প্যাটার্নম্যাচিং(_:m)=[1..l]>>["+"!"-"]++("|"!" "<$u)
আকংকা

আশ্চর্যজনকভাবে _:m=[1..l]>>["+"!"-"]++("|"!" "<$u)কাজ করে
আকাঙ্কা

@ খ্রিস্টিয়ান ইরওয়ান: ভাল দাগ! ধন্যবাদ!
নিমি

3

ব্রেনফাক - 334 বাইট

,[<+<<<<+>>>>>-]<[[>>]+[<<]>>-]<----[>---<----]--[>[+>>]<<[<<]>++++++]>[+.>>]-[<+>---]<+++++++>>--[<+>++++++]->---[<------->+]++++++++++[<++<]+++++[>[++++++>>]<<[<<]>-]>[-]>.-<<----[>>+++<<----]--[>+<--]>---<<<<++++++++++.,[>[>+>+<<-]>[<+>-]>[<<<<[>>>>>>[.>>]<<[<<]>>-]>>>>>[.>>]<<[<<]>-]<<<<+>-]>>>>[-]----[>---<----]>+.[>]<<<<<[.<<]

আমি এটি অনেক সংক্ষিপ্ত হবে বলে আশা করছিলাম।

এটি একটি "স্ট্রিং" সেট আপ করে যা দেখতে দেখতে দেখতে | (...) |একটির মতো এবং +----(...)----+প্রতিটি oউপরের এবং নীচে এসের জন্য কিছু বিশেষ কেসিং সহ প্রয়োজনীয় হিসাবে প্রিন্ট করে ।

এমন একটি দোভাষী দরকার যা 8 বিট কোষ ব্যবহার করে এবং আপনাকে সেল 0 থেকে বাম দিকে যেতে দেয় (এটি নেতিবাচক কোষে বা লুপিং এ থাকুক)। আমার অভিজ্ঞতা হিসাবে, এগুলি সর্বাধিক সাধারণ ডিফল্ট সেটিংস।

মন্তব্য সহ:

,[<+<<<<+>>>>>-]<[[>>]+[<<]>>-] Get m from input; make a copy
                      Turn it into m cells containing 1 with empty cells between

<----[>---<----]      Put 67 at the beginning (again with an empty cell between)

--[>[+>>]<<[<<]>++++++]  Add 43 to every nonempty cell

>[+.>>]               Add 1 to each cell and print it

-[<+>---]<+++++++    Put 92 after the last 45 (no empty cell!)

>>--[<+>++++++]      Put 43 immediately after the 92

->---[<------->+]    Put 234 after 43

++++++++++           And 10 after that

[<++<]             Add two to the 234; 92; the empty spaces; and left of the 111

+++++[>[++++++>>]<<[<<]>-] Add 30 to each 2; the 94; and the 236

>[-]>.-<<----[>>+++<<----] Erase leftmost 32; Print 111; subtract 68 from it

--[>+<--]>---        Put 124 where the 32 was

<<<<++++++++++.,     Print a newline; override the cell with n from input

[                    n times:

  >[>+>+<<-]>[<+>-]    Make a copy of m

  >[                   m times:

    <<<<                 Look for a flag at a specific cell

    [                    If it's there:

      >>>>>>[.>>]          Go to the 43; print it and every second cell after

      <<[<<]>>-            Clear the flag

    ]

    >>>>>[.>>]           Go to the 124; print it and every second cell after

    <<[<<]>              Go back to the copy of m

  -]

  <<<<+>               Plant the flag

-]

>>>>

[-]----[>---<----]>+ Erase the 124; add 68 to 43

.[>]                 Print it; then head to the end

<<<<<[.<<] Go to the last 45; print it; then print every second cell to the left



2

পার্ল, 98 বাইট

($n,$m)=@ARGV;print$h="o"."-"x$m."o\n",((("|".(" "x$m)."|\n")x$m.$h)x$n)=~s{o(-+)o(?=\n.)}{+$1+}gr

1
একটি দুর্দান্ত প্রথম উত্তর। তবে আমি +আপনার কোডে কোনও লক্ষণ দেখতে পাচ্ছি না , আপনি কি বিবেচনা করেছেন যে মধ্যবর্তী রোগগুলির +প্রতিটি প্রান্তে চিহ্ন রয়েছে?
স্তর নদী

খুব সুন্দর শব্দযুক্ত মন্তব্যের জন্য আপনাকে ধন্যবাদ - আমি সম্পূর্ণরূপে লক্ষণগুলি পুরোপুরি ফাঁক করে দিয়েছি! আমাকেও বেশ খানিকটা জায়গা ব্যয় করতে হবে; আমি কীভাবে এটি সংক্ষিপ্ত করতে পারি তা ভাবছি ... বাদ দেওয়া ($n,$m)=@ARGV;এবং সেগুলি ইতিমধ্যে সেট করা আছে তা ধরে নেওয়া - এটি স্পিরিটে আছে কি না তা নিশ্চিত নয়। আমি এটি সন্ধান করতে হবে।
জিলজর

প্রশ্নে অন্যথায় নির্দিষ্ট না করা অবধি নিয়মটি এখানে মেটা কোডেগল্ফ.স্ট্যাককেক্সচেঞ্জ . com/a/2422/15599 । আপনি কেবল ভেরিয়েবলগুলি সেট করা ধরে নিতে পারবেন না তবে আপনি যদি প্রোগ্রামটির সাহায্য করে তবে কোনও প্রোগ্রামের পরিবর্তে একটি ফাংশন লিখতে পারেন। আমি পার্ল করি না তবে আমি ধরে নিচ্ছি যে এটি আপনাকে রক্ষা করতে পারে @ARGV। এছাড়াও, কারও জবাব দেওয়ার সময় মনে রাখবেন @ ব্যবহারকারীর নাম অন্তর্ভুক্ত করুন যাতে তারা একটি সতর্কতা পান। এটি আপনার পোস্ট হিসাবে এটি করার দরকার নেই।
স্তর নদী সেন্ট


1

টিসিএল, 187 বাইট

lassign $argv n w
set c 0
while { $c < [expr {($w * $n) + ($n + 2)}]} {if {[expr {$c % ($n + 1)}] == 0} {puts "o[string repeat "-" $w ]o"} else {puts "|[string repeat " " $w ]|"}
incr c}

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


1

পিএইচপি, 81bytes

সরাসরি পিএইচপি কমান্ড কল করার সময় 2 টি আর্গুমেন্ট পাস হওয়ার আশা করে। প্রথমটি একটি আকার এবং দ্বিতীয়টি হ'ল ধাপগুলির সংখ্যা।

$R=str_repeat;echo$P="o{$R('-',$W=$argv[1])}o
",$R("|{$R(' ',$W)}|
$P",$argv[2]);

কিছু উন্নতির প্রয়োজন হতে পারে।


0

পাইথন 2, 94 বাইট

def F(n,m):a,b,c,d='o|+-';r=[a+d*m+a]+([b+' '*m+b]*m+[c+d*m+c])*n;r[-1]=r[0];print'\n'.join(r)

'Ungolfed':

def F(n,m):
 # 'o---o'
 r = ['o'+'-'*m+'o']
 # ('|   |'*m+'+---+') n times
 r += (['|'+' '*m+'|']*m+['+'+'-'*m+'+'])*n
 # replace last +---+ with o---o
 r[-1] = r[0]
 print '\n'.join(r)


0

পিপ -l , 35 বাইট

(^YsXbRLaJW'-)XbWR^('|XbRLaJ'+)WR'o

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

ব্যাখ্যা

(^YsXbRLaJW'-)XbWR^('|XbRLaJ'+)WR'o
                                     a is length, b is size, s is space (implicit)
   sXb                               String containing b spaces
      RLa                            List containing a copies of that string
         JW'-                        Join on "-" and wrap the result in "-" as well
  Y                                  Necessary for operator precedence reasons
 ^                                   Split into a list of characters
(            )Xb                     String-repeat each character in the list b times
                                     This list represents the central columns of the ladder

                    '|Xb             String containing b pipe characters
                        RLa          List containing a copies of that string
                           J'+       Join on "+"
                   (          )WR'o  Wrap in "o"
                  ^                  Split into a list of characters
                                     This list represents the outer columns of the ladder

                WR                   Wrap the left list in the right list, vectorizing

কিছু অন্যান্য সংস্করণ

পাইথ ধরার চেষ্টা করে আমি অনেকগুলি ভিন্ন পদ্ধতির চেষ্টা করেছি ...

[Y'-XbWR'o;@>(sXbWR'|RLbPE'-XbWR'+RL:a)y]  41
Y^(t**b.1*:t**bX--a.1)" --"@yXbWR"|o+"@y   40
Y'|XbRLaJ'+YyWR'o;Z:sXbRLaJW'-RLbPEyAEy    39
t**:b(" |-o-+"<>2)@_@^t.1M$*Y[ttXa-1].1    39
J*Z:sXbRLaJW'-RLbWR:^('|XbRLaJ'+)WR'o      37
Y^$*Y[t**:btXa-1].1" --"@yXbWR"|o+"@y      37

আমি বিশেষত এগুলি সম্পর্কে খুব পছন্দ করি t**b, যারা মইটির উল্লম্ব প্যাটার্ন উত্পন্ন করতে গণিত ব্যবহার করে:

        b           Size; e.g. 3
    t               Preset variable for 10
     **:            Set t to t**b (e.g. 1000)
           a        Length; e.g. 3
            -1      2
         tX         String-repeat (the new value of) t 2 times: 10001000
   [          ]     Put t and the above into a list: [1000; 10001000]
               .1   Append 1 to both of them: [10001; 100010001]
$*(              )  Fold on multiplication: 1000200020001

1000200020001তারপর নিদর্শন জেনারেট করতে ব্যবহার করা যেতে পারে o|||+|||+|||oএবং - - - -যা মই করা হয়। দুর্ভাগ্যক্রমে, আমি এই পদ্ধতির যোগ / মোড়কের পদ্ধতির চেয়ে কম হতে পারি না couldn't

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