আমার টার্মিনালে বৃষ্টি হচ্ছে!


24

চ্যালেঞ্জের বর্ণনা

টার্মিনালে আপনাকে বৃষ্টির সিমুলেশনটি দেখাতে হবে।

এর নিচে দেওয়া উদাহরণে এলোমেলোভাবে 100 টি বৃষ্টিপাত যুক্ত করার (নীচের সময়টি শেষ হওয়ার আগ পর্যন্ত 0.2 সেকেন্ডের জন্য অপেক্ষা করে) আবার স্থির করে পুনরায় আঁকতে স্থানাঙ্কগুলি (আপনার ভাষা প্রস্তাবিত ডিফল্ট এলোমেলো ফাংশনটি ব্যবহার করুন) in যেকোন চরিত্রকে বৃষ্টিপাতের প্রতিনিধিত্ব করতে ব্যবহার করা যেতে পারে।

পরামিতি

  • সেকেন্ডে পুনরায় আঁকানোর মধ্যে সময় অপেক্ষা করুন।
  • এমন সময় যার জন্য বৃষ্টিপাত দৃশ্যমান হবে। এটি কেবল একটি পূর্ণসংখ্যা যা পুনরাবৃত্তির সংখ্যা উপস্থাপন করে। [সুতরাং, বৃষ্টির জন্য নেট সময়টি দৃশ্যমান হবে এটি প্রত্যাশার সময়ের দ্বারা বহুগুণ বৃদ্ধি করা হয়েছে]
  • বৃষ্টি শেষ হলে প্রদর্শিত বার্তা। (এটি কেন্দ্রিক হতে হবে)
  • পর্দায় প্রদর্শিত বৃষ্টিপাতের সংখ্যা।

বিধি

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

কোড নমুনা এবং আউটপুট

এটি এনক্রোস ব্যবহার করে পাইথন ২.7-এ লিখিত একটি অদ্বিতীয় সংস্করণ।

import curses
import random
import time

myscreen = curses.initscr()
curses.curs_set(0) # no cursor please 
HEIGHT, WIDTH = myscreen.getmaxyx() 
RAIN = '/' # this is what my rain drop looks like 
TIME = 10 

def make_it_rain(window, tot_time, msg, wait_time, num_drops):
    """
    window    :: curses window 
    time      :: Total time for which it rains
    msg       :: Message displayed when it stops raining
    wait_time :: Time between redrawing scene 
    num_drops :: Number of rain drops in the scene 
    """
    for _ in range(tot_time):
        for i in range(num_drops):
            x,y=random.randint(1, HEIGHT-2),random.randint(1,WIDTH-2)       
            window.addstr(x,y,RAIN)
        window.refresh()
        time.sleep(wait_time)
        window.erase()

    window.refresh()
    window.addstr(HEIGHT/2, int(WIDTH/2.7), msg)


if __name__ == '__main__':
    make_it_rain(myscreen, TIME, 'IT HAS STOPPED RAINING!', 0.2, 100)
    myscreen.getch()
    curses.endwin()

আউটপুট -

এখানে চিত্র বর্ণনা লিখুন


3
ভবিষ্যতে আবার পোস্ট করার পরিবর্তে আসলটি সম্পাদনা করুন। লোকেরা যদি মনে করে যে চশমাগুলি পরিষ্কার, তারা এটি পুনরায় খোলার জন্য মনোনীত করবে।
গম উইজার্ড

6
পাঠ্যটি কি কেন্দ্রীভূত করতে হবে? এটি কি এলোমেলোভাবে বৃষ্টি হচ্ছে, বোঁটারগুলির প্রাথমিক অবস্থানটি কী গুরুত্বপূর্ণ? সময়কে কীভাবে মাপছেন? মিলিসেকেন্ডে, সেকেন্ড, মিনিট? "অতিরিক্ত পয়েন্টস" কী?
ম্যাজিক অক্টোপাস উর্ন

1
আপনি যদি, A. ইউনিট নির্দিষ্ট করুন। খ। টার্মিনালের আকার নির্দিষ্ট করুন বা এটিকে ইনপুট হিসাবে গ্রহণ করুন। এবং সি অতিরিক্ত পয়েন্ট সম্পর্কে অংশ সরান; এই চ্যালেঞ্জ আরও সংজ্ঞায়িত করা হবে।
ম্যাজিক অক্টোপাস উর্ন

আপনি যখন "এলোমেলো" বলেন, আমরা কি তার অর্থ ধরে নিতে পারি? "অভিন্ন র্যান্ডম" ?
ডিজিটাল ট্রমা

3
স্যান্ডবক্সে 1 দিন প্রায়শই যথেষ্ট হয় না। মনে রাখবেন যে লোকেরা এখানে বিনোদনমূলক এবং বিভিন্ন সময় অঞ্চল থেকে আসে - তাত্ক্ষণিক প্রতিক্রিয়া আশা করা উচিত নয়।
ডিজিটাল ট্রমা

উত্তর:


12

এমএটিএল , 52 বাইট

xxx:"1GY.Xx2e3Z@25eHG>~47*cD]Xx12:~c!3G80yn-H/kZ"why

ইনপুটগুলি এই ক্রমে: আপডেটগুলির মধ্যে বিরতি, ড্রপগুলির সংখ্যা, বার্তা, পুনরাবৃত্তির সংখ্যা। মনিটরের আকার 80 × 25 টি অক্ষর (হার্ড-কোডেড) থাকে।

জিআইএফ নাকি তা হয়নি! (ইনপুট সঙ্গে উদাহরণ 0.2, 100, 'THE END', 30)

এখানে চিত্র বর্ণনা লিখুন

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

ব্যাখ্যা

xxx      % Take first three inputs implicitly and delete them (but they get
         % copied into clipboard G)
:"       % Take fourth input implicitly. Repeat that many times
  1G     %   Push first input (pause time)
  Y.     %   Pause that many seconds
  Xx     %   Clear screen
  2e3    %   Push 2000 (number of chars in the monitor, 80*25)
  Z@     %   Push random permutation of the integers from 1 to 2000
  25e    %   Reshape as a 25×80 matrix, which contains the numbers from 1 to 2000
         %   in random positions
  HG     %   Push second input (number of drops)
  >~     %   Set numbers that are <= second input to 1, and the rest to 0
  47*c   %   Multiply by 47 (ASCII for '/') and convert to char. Char 0 will
         %   be displayed as a space
  D      %   Display
]        % End
Xx       % Clear screen
12:~     % Push row vector of twelve zeros
c!       % Convert to char and transpose. This will produce 12 lines containing
         % a space, to vertically center the message in the 25-row monitor
3G       % Push third input (message string)
80       % Push 80
yn       % Duplicate message string and push its length
-        % Subtract
H/k      % Divide by 2 and round down
Z"       % Push string of that many spaces, to horizontally center the message 
         % in the 80-column monitor
w        % Swap
h        % Concatenate horizontally
y        % Duplicate the column vector of 12 spaces to fill the monitor
         % Implicitly display

1
আমি এটি কীভাবে শেষ হয় তা পছন্দ করি why:)
টেকলেহে

1
@ টেকলেহে আমি আপনার প্রোফাইলে বর্ণনাটি পছন্দ করি :-)
লুইস মেন্ডো

1
ধন্যবাদ. আপনার ভাষা পড়তে খুব মজাদার। (হ্যাঁ, আমি আপনার এমএটিএল উত্তরগুলি লোল করে
যাচ্ছি

10

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

t=
(o,f,d,r,m,g=(r,_,x=Math.random()*78|0,y=Math.random()*9|0)=>r?g(r-(d[y][x]<`/`),d[y][x]=`/`):d.map(a=>a.join``).join`
`)=>i=setInterval(_=>o.data=f--?g(r,d=[...Array(9)].map(_=>[...` `.repeat(78)])):`



`+` `.repeat(40-m.length/2,clearInterval(i))+m,d*1e3)
<input id=f size=10 placeholder="# of frames"><input id=d placeholder="Interval between frames"><input id=r size=10 placeholder="# of raindrops"><input id=m placeholder="End message"><input type=button value=Go onclick=t(o.firstChild,+f.value,+d.value,+r.value,m.value)><pre id=o>&nbsp;

কমপক্ষে আমার ব্রাউজারে, আউটপুটটি "সম্পূর্ণ পৃষ্ঠা" ছাড়াই স্ট্যাক স্নিপেট অঞ্চলে ফিট করার জন্য তৈরি করা হয়েছে, সুতরাং আপনি যদি 702 এরও বেশি বৃষ্টিপাতের জন্য জিজ্ঞাসা করেন তবে এটি ক্র্যাশ হয়ে যাবে।

সম্পাদনা করুন: আমার আউটপুট অঞ্চল হিসাবে একটি টেক্সট নোড ব্যবহার করে 7 বাইট সংরক্ষণ করা হয়েছে।


স্ট্রিং হিসাবে ফাংশনটি পাস করে আপনি কয়েকটি বাইট সংরক্ষণ করতে পারেন setInterval। এছাড়াও, আপনি textContentপরিবর্তে ব্যবহার করবেন না কেন innerHTML?
লুক

@ এল.সার্নé একটি অভ্যন্তরীণ ফাংশন ব্যবহার করে আমাকে বাইরের ফাংশনে ভেরিয়েবলগুলি উল্লেখ করতে দেয়।
নিল

উফফফ, আমার খারাপ, এটি খেয়াল করেনি।
লুক

8

আর, 196 192 185 বাইট

বর্ণনার উপর ভিত্তি করে আমি লিখেছি কেবল একটি মক সংস্করণ। আশা করি এটি ওপি কিছুটা খুঁজছিল।

@ প্ল্যানাপাসকে ধন্যবাদ দিয়ে কিছু বাইট সংরক্ষণ করা হয়েছে।

f=function(w,t,m,n){for(i in 1:t){x=matrix(" ",100,23);x[sample(2300,n)]="/";cat("\f",rbind(x,"\n"),sep="");Sys.sleep(w)};cat("\f",g<-rep("\n",11),rep(" ",(100-nchar(m))/2),m,g,sep="")}

যুক্তি:

  • w: ফ্রেমের মধ্যে সময় অপেক্ষা করুন
  • t: ফ্রেমের মোট সংখ্যা
  • m: কাস্টম বার্তা
  • n: বৃষ্টির ফোটা সংখ্যা

উদাহরণ

উপরে বৃষ্টি হচ্ছে বলে মনে হচ্ছে কেন?

সম্পাদনা: আমার উল্লেখ করা উচিত যে এটি আমার কাস্টমাইজড 23x100 অক্ষর আর-স্টুডিও কনসোল। মাত্রাগুলি ফাংশনটিতে হার্ডকোড করা থাকে তবে নীতিগতভাবে getOption("width")এটি এটিকে কনসোল আকারে নমনীয় করে তুলতে পারে।

এখানে চিত্র বর্ণনা লিখুন

অবহেলিত এবং ব্যাখ্যা

f=function(w,t,m,n){
    for(i in 1:t){
        x=matrix(" ",100,23);             # Initialize matrix of console size
        x[sample(2300,n)]="/";            # Insert t randomly sampled "/"
        cat("\f",rbind(x,"\n"),sep="");   # Add newlines and print one frame
        Sys.sleep(w)                      # Sleep 
    };
    cat("\f",g<-rep("\n",11),rep(" ",(100-nchar(m))/2),m,g,sep="")  # Print centered msg
}

এটি দেখতে পুরোপুরি ঠিক আছে! +1 এবং আমি মনে করি না এটি কেবল আপনার
অনুভূতিটি

@plannapus। rep()স্বয়ংক্রিয়ভাবে timesআর্গুমেন্টটি মেলে তাই এর জন্য কোনও প্রয়োজন নেই। আরও 7 টি বাইট সংরক্ষণ করেছেন!
বিলিউব

খুব সুন্দর সমাধান। যুক্তিগুলি ফাংশনটিতে কনসোল আকারকে চাপিয়ে আপনি একটি বাইট সংরক্ষণ করতে পারেন (যদি এটি অনুমোদিত হয়); আপনি ব্যবহার দ্বারা অন্য বাইট সংরক্ষণ করতে পারবেন runifবদলে sampleএলোমেলোভাবে ম্যাট্রিক্স নিয়ে আসতে '। ভালো লেগেছে:f=function(w,t,m,n,x,y){for(i in 1:t){r=matrix(" ",x,y);r[runif(n)*x*y]="/";cat("\f",rbind(r,"\n"),sep="");Sys.sleep(w)};cat("\f",g<-rep("\n",y/2),rep(" ",(x-nchar(m))/2),m,g,sep="")}
rturnbull

5

সি 160 বাইট

f(v,d,w,char *s){i,j;char c='/';for(i=0;i<v;i++){for(j=0;j<d;j++)printf("%*c",(rand()%100),c);fflush(stdout);sleep(w);}system("clear");printf("%*s\n",1000,s);}

v-Time the raindrops are visible in seconds.
d-Number of drops per iteration
w-Wait time in seconds, before the next iteration
s-String to be passed on once its done

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

void f(int v, int d, int w,char *s)
{ 

   char c='/';
   for(int i=0;i<v;i++)
   { 
      for(int j=0;j<d;j++)
         printf("%*c",(rand()%100),c);

      fflush(stdout);
      sleep(w); 
   }   
   system("clear");
   printf("%*s\n", 1000,s);
}

আমার টার্মিনালে টেস্টকেস

v - 5 seconds
d - 100 drops
w - 1 second wait time
s - "Raining Blood" :)

4

আর, 163 অক্ষর

f=function(w,t,n,m){for(i in 1:t){cat("\f",sample(rep(c("/"," "),c(n,1920-n))),sep="");Sys.sleep(w)};cat("\f",g<-rep("\n",12),rep(" ",(80-nchar(m))/2),m,g,sep="")}

ইনডেন্ট এবং নিউলাইনগুলি সহ:

f=function(w,t,n,m){
    for(i in 1:t){
        cat("\f",sample(rep(c("/"," "),c(n,1920-n))),sep="")
        Sys.sleep(w)
    }
    cat("\f",g<-rep("\n",12),rep(" ",(80-nchar(m))/2),m,g,sep="")
}

এটি 80 কলাম দ্বারা 24 টি লাইনের টার্মিনাল আকারের সাথে মানিয়ে নেওয়া হয়েছে। wঅপেক্ষার সময়, tফ্রেমের nসংখ্যা, বৃষ্টিপাতের সংখ্যা এবং mচূড়ান্ত বার্তা।

এটা তোলে থেকে পৃথক @ billywob এর উত্তর বিভিন্ন ব্যবহারে sampleযদি আউটপুটের আকার বাদ দেওয়া হয়, sampleইনপুট ভেক্টর (এখানে একটি ভেক্টর বৃষ্টিবিন্দুর এর প্রয়োজনীয় নম্বর রয়েছে এমন একটি বিন্যাস ও স্পেস সংশ্লিষ্ট সংখ্যা দেয় যে, আসলে যুক্তি ধন্যবাদ timesএর ফাংশনটি repভেক্টরাইজড)। ভেক্টরের আকার যেমন পর্দার আকারের সাথে ঠিক মিল থাকে, তেমন নতুন লাইন যুক্ত করার দরকার নেই, বা জোর করে আকারকে ম্যাট্রিক্সে রূপ দেওয়ার দরকার নেই।

আউটপুট জিআইএফ


3

নোডজেএস: 691 158 148 বাইট

সম্পাদন করা

অনুরোধ অনুসারে, অতিরিক্ত বৈশিষ্ট্যগুলি সরানো হয়েছে এবং গল্ফ হবে।

s=[];setInterval(()=>{s=s.slice(L='',9);for(;!L[30];)L+=' |'[Math.random()*10&1];s.unshift(L);console.log("\u001b[2J\u001b[0;0H"+s.join('\n'))},99)

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

s='';setInterval(()=>{for(s='\n'+s.slice(0,290);!s[300];)s=' |'[Math.random()*10&1]+s;console.log("\u001b[2J\u001b[0;0H"+s)},99)

পূর্ববর্তী উত্তর

সম্ভবত সেরা গল্ফিং না, তবে আমি কিছুটা দূরে সরে এসেছি। এটিতে windচ্ছিক বাতাসের দিক এবং বৃষ্টির ফ্যাক্টর রয়েছে।

node rain.js 0 0.3

var H=process.stdout.rows-2, W=process.stdout.columns,wnd=(arg=process.argv)[2]||0, rf=arg[3]||0.3, s=[];
let clr=()=>{ console.log("\u001b[2J\u001b[0;0H") }
let nc=()=>{ return ~~(Math.random()*1+rf) }
let nl=()=>{ L=[];for(i=0;i<W;i++)L.push(nc()); return L}
let itrl=(l)=>{ for(w=0;w<wnd;w++){l.pop();l.unshift(nc())}for(w=0;w>wnd;w--){l.shift();l.push(nc())};return l }
let itrs=()=>{ if(s.length>H)s.pop();s.unshift(nl());s.map(v=>itrl(v)) }
let d=(c,i)=>{if(!c)return ' ';if(i==H)return '*';if(wnd<0)return '/';if(wnd>0)return '\\';return '|'}
let drw=(s)=>{ console.log(s.map((v,i)=>{ return v.map(  c=>d(c,i)  ).join('') }).join('\r\n')) }
setInterval(()=>{itrs();clr();drw(s)},100)

এখানে কাজ করে এর ওয়েবম দেখুন


2

নুডেল , 44 বাইট বিহীন

আমি ভাষা তৈরির পর থেকে আমার করণীয়গুলির তালিকায় কেন্দ্রীভূত ছিলাম ... তবে, আমি অলস ছিলাম এবং এই চ্যালেঞ্জের পরেও যোগ করি নি। সুতরাং, এখানে আমি প্রতিযোগিতা করছি না, তবে চ্যালেঞ্জের সাথে মজা করেছি :)

ØGQÆ×Øæ3/×Æ3I_ȥ⁻¤×⁺Æ1Ḷḋŀ÷25¶İÇæḍ€Æ1uụC¶×12⁺ß

কনসোলের আকারটি 25x50 তে কঠোরভাবে কোড করা হয়েছে যা অনলাইন সম্পাদকটিতে ভাল লাগে না তবে স্নিপেটের জন্য হয় does

চেষ্টা করে দেখুন :)


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

Ø                                            # Pushes all of the inputs from the stack directly back into the stdin since it is the first token.

 GQÆ×Ø                                       # Turns the seconds into milliseconds since can only delay by milliseconds.
 GQ                                          # Pushes on the string "GQ" onto the top of the stack.
   Æ                                         # Consumes from stdin the value in the front and pushes it onto the stack which is the number of seconds to delay.
    ×                                        # Multiplies the two items on top of the stack.
                                             # Since the top of the stack is a number, the second parameter will be converted into a number. But, this will fail for the string "GQ" therein treated as a base 98 number producing 1000.
     Ø                                       # Pops off the new value, and pushes it into the front of stdin.

      æ3/×Æ3I_ȥ⁻¤×⁺                          # Creates the correct amount of rain drops and spaces to be displayed in a 50x25 console.
      æ3                                     # Copies the forth parameter (the number of rain drops).
        /                                    # Pushes the character "/" as the rain drop character.
         ×                                   # Repeats the rain drop character the specified number of times provided.
          Æ3                                 # Consumes the number of rain drops from stdin.
            I_                               # Pushes the string "I_" onto the stack.
              ȥ                              # Converts the string into a number as if it were a base 98 number producing 25 * 50 = 1250.
               ⁻                             # Subtract 1250 - [number rain drops] to get the number of spaces.
                ¤                            # Pushes on the string "¤" which for Noodel is a space.
                 ×                           # Replicate the "¤" that number of times.
                  ⁺                          # Concatenate the spaces with the rain drops.

                   Æ1Ḷḋŀ÷25¬İÇæḍ€            # Handles the animation of the rain drops.
                   Æ1                        # Consumes and pushes on the number of times to loop the animation.
                     Ḷ                       # Pops off the number of times to loop and loops the following code that many times.
                      ḋ                      # Duplicate the string with the rain drops and spaces.
                       ŀ                     # Shuffle the string using Fisher-Yates algorithm.
                        ÷25                  # Divide it into 25 equal parts and push on an array containing those parts.
                           ¶                 # Pushes on the string "¶" which is a new line.
                            İ                # Join the array by the given character.
                             Ç               # Clear the screen and display the rain.
                              æ              # Copy what is on the front of stdin onto the stack which is the number of milliseconds to delay.
                               ḍ             # Delay for the specified number of milliseconds.
                                €            # End of the loop.

                                 Æ1uụC¶×12⁺ß # Creates the centered text that is displayed at the end.
                                 Æ1          # Pushes on the final output string.
                                   u         # Pushes on the string "u" onto the top.
                                    ụC       # Convert the string on the top of the stack to an integer (which will fail and default to base 98 which is 50) then center the input string based off of that width.
                                      ¶      # Push on a the string "¶" which is a new line.
                                       ×12   # Repeat it 12 times.
                                          ⁺  # Append the input string that has been centered to the new lines.
                                           ß # Clear the screen.
                                             # Implicitly push on what is on the top of the stack which is the final output.

<div id="noodel" code="ØGQÆ×Øæ3/×Æ3I_ȥ⁻¤×⁺Æ1Ḷḋŀ÷25¶İÇæḍ€Æ1uụC¶×12⁺ß" input='0.2, 50, "Game Over", 30' cols="50" rows="25"></div>

<script src="https://tkellehe.github.io/noodel/noodel-latest.js"></script>
<script src="https://tkellehe.github.io/noodel/ppcg.min.js"></script>


1
আহ আমার সরঞ্জাম বাক্সে একটি দুর্দান্ত ভাষা আছে haha! যাইহোক, আপনি চ্যালেঞ্জটি পছন্দ করেছেন খুশি :) +1
হ্যাশকোড 55

2

রুবি + জিএনইউ কোর ইউটিস, 169 বাইট

ফাংশনের প্যারামিটারগুলি অপেক্ষা করার সময়, পুনরাবৃত্তির সংখ্যা, বার্তা এবং বৃষ্টিপাতের সংখ্যা, যাতে ক্রম হয়। পাঠযোগ্যতার জন্য নিউলাইনস lines

কোর ইউটিসগুলির জন্য tputএবং প্রয়োজন ছিল clear

->w,t,m,n{x=`tput cols`.to_i;z=x*h=`tput lines`.to_i
t.times{s=' '*z;[*0...z].sample(n).map{|i|s[i]=?/};puts`clear`+s;sleep w}
puts`clear`+$/*(h/2),' '*(x/2-m.size/2)+m}

1

পাইথন 2.7, 254 251 বাইট

এটি ncurses ব্যবহার না করে আমার নিজের চেষ্টা।

from time import*;from random import*;u=range;y=randint
def m(t,m,w,n):
    for _ in u(t):
        r=[[' 'for _ in u(40)]for _ in u(40)]
        for i in u(n):r[y(0,39)][y(0,39)]='/'
        print'\n'.join(map(lambda k:' '.join(k),r));sleep(w);print '<esc>[2J'
    print' '*33+m

আমাকে বাইটস সংশোধন ও সংরক্ষণের জন্য @ এরিকটআউটগলফারকে ধন্যবাদ জানাই।


আপনি forএক লাইনে একটি লুপ রাখতে পারবেন না (যেমন আপনার রয়েছে 40)];for i in u()। '[2J'আমার মনে হয় আপনার একটি ইসি চরও দরকার । এছাড়াও, একটি অতিরিক্ত স্থান ছিল u(n): r[y। আপনি কিভাবে 249 গণনা করেছেন তা আমি জানি না। সব বিষয় আমি দেখেছি স্থির হয়ে এখানে
এরিক আউটগলফার

আমি পোস্ট করা কোডটি আমার পক্ষে কাজ করছে। এবং হ্যাঁ আমি আসলে এটি ভুল হিসাবে গণ্য করেছি, আমি সাদা ইন্টেন্টেড জায়গা গণনা করি না, আমি এটি সম্পর্কে জানতাম না। লিঙ্কের জন্য ধন্যবাদ! আমি এটি সম্পাদনা করব।
হ্যাশকোডে 55

EriktheOutgolfer ওহ এবং হ্যাঁ, ESC চর সম্পর্কে, কোনও পালানোর ক্রম দরকার নেই। এটি কেবল 'ESC [2J' কার্যকরভাবে মুদ্রণ করে, যা স্ক্রিনটি সাফ করার জন্য আনসি এস্কেপ ক্রম। এটি কার্সার অবস্থানটি পুনরায় সেট করে না।
হ্যাশকোডে 55

আপনি এটি আরও গল্ফ করতে পারেন :) তবে আপনাকে আপনার কোডের নীচে একটি নোট যুক্ত করতে হবে যা উল্লেখ করে যে <esc>আক্ষরিক 0x1B ইসি বাইট বোঝায়। বাইট গণনা 242 নয়,
246

@ এরিকিউউটগলফার ওহ ধন্যবাদ!
হ্যাশকোডে 55

1

স্মাইলব্যাসিক, 114 বাইট

INPUT W,T,M$,N
FOR I=1TO T
VSYNC W*60CLS
FOR J=1TO N
LOCATE RND(50),RND(30)?7;
NEXT
NEXT
LOCATE 25-LEN(M$)/2,15?M$

কনসোলের আকার সর্বদা 50 * 30 হয়।


1

পার্ল 5, 156 বাইট

154 বাইট কোড + 2 এর জন্য -pl

$M=$_;$W=<>;$I=<>;$R=<>;$_=$"x8e3;{eval'$-=rand 8e3;s!.{$-}\K !/!;'x$R;print;select$a,$a,$a,$W;y!/! !;--$I&&redo}$-=3920-($l=length$M)/2;s;.{$-}\K.{$l};$M

160x50 এর একটি স্থির আকার ব্যবহার করে।

এটি অনলাইনে দেখুন!


পার্ল 5, 203 বাইট

201 বাইট কোড + 2 এর জন্য -pl

$M=$_;$W=<>;$I=<>;$R=<>;$_=$"x($z=($x=`tput cols`)*($y=`tput lines`));{eval'$-=rand$z;s!.{$-}\K !/!;'x$R;print;select$a,$a,$a,$W;y!/! !;--$I&&redo}$-=$x*($y+!($y%2))/2-($l=length$M)/2;s;.{$-}\K.{$l};$M

tputটার্মিনালের আকার নির্ধারণ করতে ব্যবহার করে।

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