একটি বল চাপান


35

নিক্ষিপ্ত বলের প্যারাবোলিক ট্র্যাজেক্টরি আঁকুন।

ইনপুটটি হল বলের প্রাথমিক wardর্ধ্বগতি, একটি ধনাত্মক পূর্ণসংখ্যা v। প্রতি সেকেন্ডে, বলটি 1স্থান ডানদিকে এবং vস্থানগুলি উল্লম্বভাবে স্থানান্তর করে এবং তারপরে মাধ্যাকর্ষণজনিত কারণে vহ্রাস পায় 1। সুতরাং, উর্ধ্বগামী বেগ অবশেষে ডাউন থেকে ধাপ vথেকে 0এবং নিচে -v, অবশেষে ফিরে তার প্রারম্ভিক উচ্চতা অধ: পতন।

বলের অবস্থানগুলি একটি প্যারোবোলার সন্ধান করে। আনুভূমিক অবস্থান এ x, তার উচ্চতার y=x*(2*v+1-x)/2সঙ্গে, (0,0)নীচে বাম দিকে বল প্রাথমিক অবস্থান।

বলের ট্রাজেক্টোরির আউটপুট ASCII শিল্পটি Oযে স্থানাঙ্কগুলিতে এটি দখল করে তার সাথে। আউটপুটটি একক বহু-লাইন পাঠ্যের টুকরো হওয়া উচিত, সময়ের সাথে সাথে পথটির অ্যানিমেশন।

আউটপুটে কোনও শীর্ষস্থানীয় নিউলাইন এবং সর্বাধিক এক ট্রেলিং নিউলাইন থাকা উচিত। নীচের লাইনটি স্ক্রিনের বাম প্রান্তে ফ্লাশ করা উচিত, অর্থাত্ কোনও অতিরিক্ত নেতৃস্থানীয় স্থান নেই। চলার জায়গাগুলি ঠিক আছে। আপনি ধরে নিতে পারেন আউটপুট টার্মিনালে আউটপুট লাইনের প্রস্থ ফিট করে।

V = 1

 OO 
O  O

বনাম = 2

  OO  
 O  O 

O    O

বনাম = 3

   OO   
  O  O  

 O    O 


O      O

বনাম = 4

    OO    
   O  O   

  O    O  


 O      O 



O        O

বনাম = 10

          OO          
         O  O         

        O    O        


       O      O       



      O        O      




     O          O     





    O            O    






   O              O   







  O                O  








 O                  O 









O                    O

সম্পর্কিত: স্থির বল সিমুলেশন


লিডারবোর্ড:


আমরা কি লাইনের একটি তালিকা আউটপুট করতে পারি?
আর

@ রিকার নোপ, নতুন লাইনের সাথে স্ট্রিং।
xnor


আমার কি কেবল ভি ভি 0 এর জন্য অ্যাকাউন্টিং করা দরকার?
nmjcman101

হ্যাঁ, ভি ইতিবাচক হবে।
এক্সএনওর

উত্তর:


17

কাঠকয়লা , 18 16 13 বাইট

-3 বাইট @ নীলকে ধন্যবাদ !

F⊕N«←OM⊕ι↓»‖C

ব্যাখ্যা

F⊕N«        »    For ι (implicitly from 0) to (1 + input as number)
       ←O          Print O, with print direction rotated 180 degrees
         M⊕ι↓     Move 1+ ι units down

                ‖C Reflect (in the default direction, right), leaving original intact

এটি অনলাইন চেষ্টা করুন!লিঙ্কটি ভার্বোজ কোডের।


আমি এটিকে অনেক পছন্দ করি, +1; এছাড়াও ওপি'র আউটপুট বড় হাতের অক্ষর "ও" ব্যবহার করে। (এটি মোটেও
অ্যালবার্ট রেনশওয়া

আপনি যদি ব্যবহার করেন ↘Oতবে আপনি 0 থেকে N সমেত লুপ করতে পারবেন যার পরিবর্তে আপনাকে দুটি বাইট সংরক্ষণ করে two
নীল

@ নীল ধন্যবাদ! এছাড়াও, এটি একটি খুব পুরানো পোস্ট: পি (এবং আমি আরও নতুন বৈশিষ্ট্যগুলি ব্যবহার করা উচিত কিনা তা অবাক করি Pro সম্ভবত তা নয়?)
ASCII-

কড়া কথায় বলতে গেলে আমি আপনাকে এখন পর্যন্ত কেবলমাত্র 1 বাইট সংরক্ষণ করেছি যতক্ষণ আপনি অন্য দুটি বাইট প্রতিস্থাপন ⁺¹করছেন । তবে এখন যে আপনি সরেছেন থেকে ‖Cথেকে Oআপনি লেখা দ্বারা অন্য বাইট সংরক্ষণ করতে পারবেন ↙OMι↓, তাই আমি ব্যাক আপ দুই বাইট আবার সংরক্ষণ করার নই।
নিল

এছাড়াও আপনি আপনার টিআইও লিঙ্কটি আপডেট করতে ভুলে গেছেন। এবং প্রযুক্তিগতভাবে আমি বিশ্বাস করি যে আমরা এখন আরও নতুন বৈশিষ্ট্যগুলির অনুমতি দিই, তবে আমি সেই বাইটগুলির জন্য ক্রেডিট দাবি করতে পারি না।
নিল

6

সি, 93 92

(দ্রষ্টব্য, কেউ কেউ মন্তব্য করেছেন 87)

y,n;f(s){for(y=0;y<=s;){printf("%*c%*c",s-y+1,79,y*2+1,79);for(n=++y;s+1-n&&n--;)puts("");}}

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


রিডেবল:

y,n;f(s){
    for(y=0;y<=s;){
        printf("%*c%*c",s-y+1,79,y*2+1,79);
        for(n=++y;s+1-n&&n--;)puts("");
    }
}

নোট:

আমি সূত্রের দ্বারা প্রদত্ত মোট রেখার সংখ্যা পুনরাবৃত্তি করে লুপের জন্য কেবল দুটিতে লুপের জন্য দুটি ভেঙে ফেলতে পারি: n*-~n/2+1

y,n,r;f(s){
    for(r=s,y=n=0;r<s*-~s/2+1;)
        y==n?printf("%*c%*c",s-y+1,79,y*2+1,79),y=0,++n:r++,y++,puts("");
}

তবে এটি দুটি লুপের জন্য পৃথক পৃথক পৃথক ব্যাবহার করার চেয়ে আরও বেশি বাইটস হিসাবে শেষ হয়


আপনি sশুরুতে বৃদ্ধি করে এক বাইট সংরক্ষণ করতে পারেন , y,n;f(s){++s;for(y=0;y<s;){printf("%*c%*c",s-y,79,y*2+1,79);for(n=++y;s-n&&n--;)puts("");}}
এটির

@ স্টেডিবক্স আমার জন্য সংকলন করবে না এছাড়াও আমি 90 বাইট পেয়েছি যখন আমি এটি গণনা করেছি (সাদা স্থানের অক্ষরগুলি সরিয়ে দেওয়ার পরে)
অ্যালবার্ট রেনশো

সকল আমি যোগ হয়নি হয়েছিল ++s;শুরুতে এবং তারপর পরিবর্তন y<=sকরার y<sএবং s-y+1করতে s-yএবং s+1-nকরতে s-n, তাই এটি কম্পাইল করা উচিত (এবং 91 বাইট থাকবে)।
স্টেডিবক্স

দেখে মনে হচ্ছে আমার মন্তব্যে কোড ব্লকের এনকোডিংয়ে কিছু সমস্যা আছে। মন্তব্যটি থেকে কোডটি অনুলিপি করা এবং আটকানো আমার পক্ষে সংকলন করবে না।
স্টেডিবক্স



5

জিএনইউ সেড, 41

  • -rস্কোরগুলিতে পতাকা থেকে সেড পর্যন্ত +1 অন্তর্ভুক্ত ।
s/$/OO/
:
s/(\s*) O( *)O$/&\n\1O \2 O/
t

ইনপুট শূন্যস্থানগুলির একটি স্ট্রিং হিসাবে, অচেনা অবস্থায় রয়েছে - স্ট্রিংয়ের দৈর্ঘ্য হ'ল ইনপুট।

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


4

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

x=input()
for i in range(x):print' '*(x-i),'O'+' '*i*2+'O'+'\n'*(i-x+1and i)

বেশ সহজ. i-x+1and iTrailing নতুন লাইন একটি গুচ্ছ প্রতিরোধ করা হয়।


প্রিন্টের শুরুতে নিউলাইনটি সরানো, যেমন '\n'*(i-1)পিছনের নিউলাইনগুলি এড়িয়ে গিয়ে 7 বাইট সংরক্ষণ করে।
এমিগনা

4

এমএটিএল , 19 17 বাইট

Q:tqYsQ79Z?PtPv!c

এমএটিএল অনলাইন এ চেষ্টা করুন ! বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা

Q        % Implicitly input v. Add 1
:        % Push [1 2 ... v+1]
tq       % Duplicate and subtract 1: pushes [0 1 ... v]]
Ys       % Cumulative sum: gives [0 1 3 6 ...]
Q        % Add 1: gives [1 2 4 7 ...]
79       % Push 79 (ASCII for 'O')
Z?       % Create sparse matrix from column indices [1 2 3 4 ...],
         % row indices [1 2 4 7 ...], and data 79
P        % Flip vertically
tP       % Duplicate, flip vertically
v        % Concatenate the two matrices vertically
!        % Transpose
c        % Convert to char. Implicitly display. Char 0 is shown as space

4

05 এ বি 1 ই , 18 14 বাইট

আদনানকে ধন্যবাদ 4 বাইট সংরক্ষণ করা

ƒ¶N×'ONúRÂJ}.c

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

ব্যাখ্যা

ƒ                   # for N in [0 ... input]
 ¶N×                # push N newlines
    'O              # push "O"
      Nú            # pad with N spaces in front
        RÂ          # reverese and create a reversed copy
          J         # join everything to a string
           }        # end loop
            .c      # pad lines until centered 

14 বাইটের জন্য: ƒ¶N×'ONúRÂJ}.c:)
আদনান

@ আদনান ধন্যবাদ! আমি .cএকটি ভিন্ন সংস্করণ দিয়ে চেষ্টা করেছি , তবে এটি তখন ভাল কাজ করে না। এটির সাথে চেষ্টা করে ভুলে গেছেন এবং úবিদ্যমানটি সম্পূর্ণরূপে ভুলে
গিয়েছেন

আমি যে জিপ পদ্ধতিটি বেছে নিয়েছি তার চেয়ে নিঃসন্দেহে ভাল, উল্লম্বভাবে আকর্ষণীয় পদ্ধতির।
ম্যাজিক অক্টোপাস উরন

4

জাভাস্ক্রিপ্ট (ES6), 98 92 89 84 78 বাইট

(-20 বাইট আর্নল্ডকে ধন্যবাদ!)

f=(v,i=0)=>i>v?"":" "[r="repeat"](v-i)+0+" "[r](2*i)+0+`
`[r](i++<v&&i)+f(v,i)

একটি পুনরাবৃত্তি সমাধান। এটাও আমার প্রথম কি কখনো জাভাস্ক্রিপ্ট উত্তর, তাই মৃদু হতে দয়া করে! আমি এখনও এই পরিষ্কার মুখের ভাষাটি শিখছি, তাই গল্ফিং টিপসটি খুব প্রশংসা করা হয়েছে। :)

পরীক্ষার স্নিপেট

পুরো আউটপুটটি দেখতে আপনাকে স্ক্রোল করতে হতে পারে।

f=(v,i=0)=>i>v?"":" "[r="repeat"](v-i)+0+" "[r](2*i)+0+`
`[r](i++<v&&i)+f(v,i)
<input id=i min=1 type=number><button onclick=alert(f(document.getElementById("i").value))>Submit</button>


এছাড়াও, ব্য্যাটিক স্ট্রিংয়ের ভিতরে ভেরিয়েবলগুলি ${}কেবলমাত্র বাইট সংরক্ষণ করে যখন ভেরিয়েবল অংশটি স্থির অংশ দ্বারা বেষ্টিত থাকে। এই হিসাবে, এই স্ট্রিংগুলি সর্বদা স্ট্যাটিক অংশগুলির সাথে শুরু এবং শেষ হওয়া উচিত।
লুক

@ আরনাউল্ড সমস্ত টিপসের জন্য ধন্যবাদ! আমি সত্যিই এটার প্রশংসা করছি! :)
আর কাপ,

@ লুক এই পরামর্শের জন্য ধন্যবাদ। যে কাজে আসবে। :)
আর কাপ,

0পরিবর্তে আপনি নিরাপদে ব্যবহার করতে পারেন "0"। তারা স্ট্রিং জোর করা হবে। এবং দ্বিতীয় চিন্তায়: i++<v&&iআসলে তুলনায় এক বাইট কম (i<v)*++i
আর্নল্ড

@ আরনাউল্ড আবারও আপনাকে ধন্যবাদ! :)
আর কপ

3

RProgN 2 , 37 বাইট

x=0xR{y@xy-` *`o` y2**`o...2y{[` };};

যথাযথ গল্ফ ল্যাঙ্গুজেজে beforeোকার আগে আমার ধরণের গল্ফযুক্ত ভাষার সাথে প্রবেশ করা।

ব্যাখ্যা

x=              # Set 'x' to the input
0xR{            # For everything between the input and 0
    y@          # Set the iteration value to y, for this function only.
    xy-` *      # Subtract y from x, repeat the string " " that many times.
    `o          # Push an "o" to the stack.
    ` y2**      # Push 2*y " "'s to the stack
    `o          # Push another "o" to the stack
    ...         # Concatenate the parts of this string together, giving us the two balls.
    2y{[` };    # For all numbers between 2 and y, add a newline.
};              #

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


3

রেটিনা, 29 19 বাইট

 ?
$.`$*¶$&$'O$`$`O

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

ফাঁকা স্থান হিসাবে অনারীতে ইনপুট নেয়। আমার জাভাস্ক্রিপ্ট উত্তর পোর্ট। সম্পাদনা করুন: @ মার্টিনইেন্ডারে to ধন্যবাদ 10 বাইট সংরক্ষণ করা হয়েছে ♦


আমি কেবলমাত্র রেটসিনা নামক একটি রেটিনা স্পিন নিয়ে কেউ আসার অপেক্ষায় রয়েছি।
তিতাস

3

বাশ , 76 বাইট

for((n=$1+1;--n;));{
yes ''|head -$n
r=$r${n}AO
t=›${n}BO$t
}
echo O${r}O$t

এটি কেবলমাত্র টার্মিনালে কাজ করে যেহেতু এটি এএনএসআই এস্কেপ সিকোয়েন্স ব্যবহার করে । সিএসআই বাইট উপস্থাপন করে ( 0x9b) )।

টেস্ট রান

$ # The terminal's encoding must be set to ISO-8859-1.
$
$ xxd -g 1 arc.sh
0000000: 66 6f 72 28 28 6e 3d 24 31 2b 31 3b 2d 2d 6e 3b  for((n=$1+1;--n;
0000010: 29 29 3b 7b 0a 79 65 73 20 27 27 7c 68 65 61 64  ));{.yes ''|head
0000020: 20 2d 24 6e 0a 72 3d 24 72 9b 24 7b 6e 7d 41 4f   -$n.r=$r.${n}AO
0000030: 0a 74 3d 9b 24 7b 6e 7d 42 4f 24 74 0a 7d 0a 65  .t=.${n}BO$t.}.e
0000040: 63 68 6f 20 4f 24 7b 72 7d 4f 24 74              cho O${r}O$t
$
$ bash arc.sh 1
 OO
O  O
$ bash arc.sh 2
  OO
 O  O

O    O
$ bash arc.sh 3
   OO
  O  O

 O    O


O      O
$ bash arc.sh 4
    OO
   O  O

  O    O


 O      O



O        O

আপনি sed $nqএকটি বাইট সংরক্ষণ করতে ব্যবহার করতে পারেন ।
জেপেলিন

দুঃখের বিষয়, না। আমি ব্যবহার করতে হবে sed ${n}qযা দীর্ঘ।
ডেনিস

আরেঘ, আমি দেখছি, আপনি sed $n\qপরিবর্তে এটি করতে পারেন , তবে এটি খুব একটা বোঝায় না, এটি হিসাবে একই বাইট গণনা হবে head!
জেপেলিন


3

আর, 89 বাইট

a=2*v+3
x=matrix(" ",a,v^2+1)
for(k in 0:v)x[c(1-k,k+2)+v,k^2+1]="o"
x[a,]="\n"
cat(x,sep="")
  • স্পেসের একটি ম্যাট্রিক্স তৈরি করুন (চলক a এই ম্যাট্রিক্সের প্রস্থ, কয়েকটি বাইট সংরক্ষণ করে)
  • চাপের উপর থেকে নীচে এবং বাহুতে কাজ করে প্রয়োজনীয় স্থানগুলিতে "o" গুলি পূরণ করুন
  • প্রতিটি ম্যাট্রিক্স সারির শেষে একটি নতুন লাইন যুক্ত করুন
  • একক স্ট্রিংয়ে ম্যাট্রিক্সটি সঙ্কুচিত করুন এবং মুদ্রণ করুন

গল্ফ করার এটাই আমার প্রথম প্রচেষ্টা, মন্তব্য স্বাগত ...


3

রাদা , 53 52 বাইট

f n{seq 0,n|{|i|["
"*i," "*(n-i),"O"," "*i*2,"O"]}_}

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

ব্যবহার: main { f(5) }

অবরুদ্ধ সংস্করণ:

function f(n) {
    seq(0, n) | for i do
        push("\n"*i, " "*(n-i), "O", " "*i*2, "O")
    done
}

আপনি কি পরিবর্তে একটি আক্ষরিক নিউলাইন ব্যবহার করতে \nএবং 1 বাইট সংরক্ষণ করতে পারেন ?
ক্রিটসি লিথোস

পুনঃটুইট করুন ধন্যবাদ!
ফার্গুসক

2

বেফুঞ্জ, 75 73 বাইট

<vp00:&
1<-1_:v#\+55:g01\-g01g00" O"1\*2g01" O"1p0
#@_\:v>$$:!
1\,:\_^#:-

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

প্রথম লাইনটি বেগ, v এ পড়ে এবং মেমরিতে একটি অনুলিপি সংরক্ষণ করে। দ্বিতীয় লাইনটি তখন সূচক i এর সাথে v থেকে শূন্যের নিচে গণনা করা হয় এবং প্রতিটি পুনরাবৃত্তির উপর স্ট্যাকের সাথে অক্ষর / দৈর্ঘ্যের জোড়গুলির অনুক্রমকে ধাক্কা দেয়।

Length  Character
-----------------
1       'O'
i*2     ' '
1       'O'
v-i     ' '
i       LINEFEED

এই ক্রমটি বিপরীতে প্রয়োজনীয় আউটপুটটির এক ধরণের রান-লেংথ এনকোডিংকে উপস্থাপন করে। শেষ দুটি লাইনে স্ট্যাকটি খালি না হওয়া অবধি প্রতিটি অক্ষরের দৈর্ঘ্যের উপস্থিতিগুলি আউটপুট করে স্ট্যাকের বাইরে এই অক্ষর / দৈর্ঘ্যের জুটিগুলি কেবল পপ করে ।


2

জাভা 8, 129 124 109 বাইট

Golfed:

v->{String s="",t="";for(int j,y=0;y<=v;++y){for(j=0;j<v;++j)s+=j<y?"\n":" ";s+="o"+t+"o";t+="  ";}return s;}

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

Ungolfed:

public class DrawTheArcOfABall {

  public static void main(String[] args) {
    for (int i = 1; i < 6; ++i) {
      System.out.println(f(v -> {
        String s = "", t = "";
        for (int j, y = 0; y <= v; ++y) {
          for (j = 0; j < v; ++j) {
            s += (j < y ? "\n" : " ");
          }
          s += "o" + t + "o";
          t += "  ";
        }
        return s;
      } , i));
      System.out.println();
      System.out.println();
    }
  }

  private static String f(java.util.function.IntFunction<String> f, int v) {
    return f.apply(v);
  }
}


লুপের জন্য দ্বিতীয় নেস্টেডের জন্য, আমি মনে করি for(;j<v;++)কাজ করবে, কারণ এই সময়ে j==y। এছাড়াও, আপনি প্রথম নেস্টেড লুপের ভিতরে লুপ String t="";(12) এবং t+=" ";(8) এর মধ্যে দ্বিতীয় স্ট্রিং ভেরিয়েবল যুক্ত করে তৃতীয়টিকে সরিয়ে ফেলতে পারেন । তারপরে তৃতীয় লুপটি কেবল হয়ে যায়s+="o"+t+"o";
nmjcman101

এছাড়াও, আপনি প্রথম দুটি নেস্টেড for(j=0;j<v;++j)s+=j<y?"\n":" ";t
লুপগুলিকে

আপনি t=""শুরুতে s এর পাশাপাশি সূচনা করতে পারেন এবং তারপরে t+=" "প্রতিটি লুপ জুড়ে রাখতে পারেনs+="o"+t+"o"
nmjcman101


2

ভিবিএ, 124 112 85 88 66 63 59 বাইট

For i=0To[A1]:?Space([A1]-i)"O"Space(2*i)"O"String(i,vbCr):Next

টেলর স্কটকে মোট ধন্যবাদ জানিয়ে 29 বাইট সংরক্ষণ করা হয়েছে

এটি অবশ্যই ভিবিএ ইমিডিয়েট উইন্ডোতে চালানো উচিত এবং ফলাফলটি একই মুদ্রণ করতে হবে।

প্রসারিত / ফর্ম্যাট করা, এটি হয়ে যায়:

For i=0 To [A1]
   Debug.Print Space([A1]-i) & "O" & Space(2*i) & "O" & String(i,vbCr)
Next

(এটি প্রমাণিত হয়েছে যে একটি মুদ্রণ কমান্ডে কনটেনটেশন অপারেটর ছাড়াই স্বয়ংক্রিয়।


b & s &স্পেস সতর্কতা!
ক্যালকুলেটরফলাইন 21

আমি চেষ্টা করেছিলাম এবং প্রথমবার এটি ভুল হয়ে গেছে। ফিরে গিয়ে বুঝতে পারলাম এটি প্রসারিত হবে b &s &Stringতবে তা নয় b&s&String। এছাড়াও, প্রথমে আমি ভেবেছিলাম আপনি Spaceফাংশনটি ব্যবহার করবেন যা আমার সম্পূর্ণরূপে হওয়া উচিত এবং এটি আরও বাইট সংরক্ষণ করে ended
ইঞ্জিনিয়ার টোস্ট

আপনি ঘনীভূত করতে for i=0 To vএবং debug.? bকরতে for i=0To vএবং Debug.?bজন্য যথাক্রমে -2বাইট। এবং ঠিক তাই আপনি জানেন যে, সম্প্রদায়ের sensকমত্যটি অটোফর্ম্যাটিং সহ যে ভাষাগুলি রয়েছে, আপনি এটি অটোফর্ম্যাট করার আগে গণনা করতে পারেন, যার অর্থ এই পরিবর্তনগুলি করার পরে আপনার 85 বাইটের একটি বাইট গণনা করা উচিত
টেলর স্কট

দ্বিতীয় বর্ণনায় এটি একটি স্নিপেট - কোনও ফাংশন বা সাবরুটিন নয়; সুতরাং এটি কোনও বৈধ সমাধান নয়। আমি বিশ্বাস করি যে আপনি এটিকে একটি এক্সেল ভিবিএ তাত্ক্ষণিক উইন্ডো ফাংশন রূপান্তর করে এবং এর থেকে ইনপুট নিয়ে এটিকে ঠিক করতে পারেন[A1] ( v=[A1]) , আমি মনে করি না যে আপনার আসলে sভেরিয়েবলের প্রয়োজন ।
টেলর স্কট

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


1

জেলি , 17 16 বাইট

‘Ḷ+\Ṛ⁶ẋ;€”Om0z⁶Y

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

কিভাবে?

‘Ḷ+\Ṛ⁶ẋ;€”Om0z⁶Y - Main link: v         e.g. 3
‘                - increment: v+1            4
 Ḷ               - lowered range             [0,1,2,3]
  +\             - reduce with addition      [0,1,3,6]
    Ṛ            - reverse                   [6,3,1,0]
     ⁶           - a space                   ' '
      ẋ          - repeat (vectorises)       ['      ','   ',' ','']
       ;€        - concatenate each with
         ”O      -     an 'O'                ['      O','   O',' O','O']
           m0    - concatenate reflection    ['      O','   O',' O','O','O','O ','O   ','O      ']
             z⁶  - transpose with space fill ['   OO   ','  O  O  ','        ',' O    O ','        ','        ','O      O']
               Y - join with line feeds      ['   OO   \n  O  O  \n        \n O    O \n        \n        \nO      O']
                 - implicit print

1

পিএইচপি, 76 বাইট

for(;$argn>=0;$s.="  ")echo($r=str_repeat)("
",$i++),$r(" ",$argn--),o,$s,o;

এটি দিয়ে চালান echo <v> | php -nR '<code>'বা এটি অনলাইনে পরীক্ষা করুন

লুপ $argnইনপুট থেকে নেমে 0এবং $iআপ 0 থেকে;
মুদ্রণ - সেই ক্রমে - প্রতিটি পুনরাবৃত্তিতে

  • $i নিউলাইনস (প্রথম পুনরাবৃত্তির মধ্যে কোনওটি নয়)
  • বাম প্যাডিং: $argnফাঁকা স্থান
  • বাম বল: o
  • অভ্যন্তরীণ প্যাডিং: 2*$i স্পেস
  • ডান বল: o

1

ভি , 23 19 বাইট

2éoÀñYço/^2á O
HPJ>

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

ব্যাখ্যা করা

2éo            " Insert two 'o's
   Àñ          " <Arg> times repeat
     Y         " Yank the current (top) line.  This is always '\s*oo'
      ço/      " On every line that matches 'o'
         ^     " Go to the first non-whitespace character (the 'o')
          2á   " Append two spaces (between the two 'o's
             O " Add a blank line on top of the current one
H              " Go to the first line
 P             " Paste in front ('\s*oo')
  J            " Join this line with the blank line immediately after it
   >           " Indent once

1

জাভাস্ক্রিপ্ট (ES6), 87 বাইট

f=
n=>' '.repeat(n+1).replace(/./g,"$`#$'O$`$`O").replace(/ *#/g,s=>[...s].fill``.join`
`)
<input type=number min=0 oninput=o.textContent=f(+this.value)><pre id=o>

নন-রিসার্সিভ সমাধান। উপরের এবং নিম্নলিখিত -২-বাইট উভয়ই সূচকের প্রয়োজনীয়তা বিরক্তিকর ছিল (আমি জানি না এটির ফলে একটি ছোট রেটিনা বন্দরের ফল হবে কিনা) পুনরাবৃত্তি সমাধান:

f=n=>~n?` `.repeat(n)+`OO`+f(n-1).replace(/^ *O/gm,`
$&  `):``


0

স্ট্যাকড, 67 63 বাইট

args 0#1+:@x:>{!n x\-1-' '*'O'+n 2*' '*+'O'+x 1-n!=n*LF*+out}"!

প্রাথমিক প্রচেষ্টা, 67 বাইট

args 0# :@v 1+2*:>[:v:+1+\-2/*' '*'O'+''split]"!fixshape tr rev out

পুরো প্রোগ্রাম। এর মতো কিছু উত্পন্ন করে:

('O'
 ' ' 'O'
 ' ' 'O'
 'O')

কোনটি প্যাডড, ট্রান্সপোজড, বিপরীত এবং আউটপুটযুক্ত।


0

ব্যাচ, 163 বাইট

@set l=@for /l %%i in (1,1,%1)do @call
@set s=
%l% set s= %%s%%
@set t=
%l%:c&for /l %%j in (2,1,%%i)do @echo(
:c
@echo %s%O%t%O
@set s=%s:~1%
@set t=  %t%

0

রুবি, 52 বাইট

->x{(0..x).map{|a|$><<$/*a+' '*(x-a)+?O+' '*a*2+?O}}

কোনও পূর্ববর্তী নিউলাইন নেই (বিধি দ্বারা অনুমোদিত: " সর্বাধিক এক ট্রেলিং নিউলাইন ")


0

এএইচকে, 93 বাইট

m=0
n=1
f=%1%-1
Loop,%1%{
r=%r%{VK20 %f%}O{VK20 %m%}O{`n %n%}
m+=2
n++
f--
}
FileAppend,%r%,*

আমি কী কী স্ট্রোকগুলি পুনরাবৃত্তি করার অভ্যন্তরে কীভাবে গণিত করব তা যদি বুঝতে পারি, তবে দুর্দান্ত '
- VK20একটি জায়গার সমান
- ফাইলের নাম হলে FileAppendআউটপুট দেয়stdout*



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