আমার… চশমা পড়ছে বৃষ্টি?


23

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

কার্য

আউটপুট ASCII শিল্প চশমা প্রতিটি সেকেন্ডে এক ফোঁটা জল যুক্ত।

ইনপুট

না

আউটপুট

তাদের উপর এক ফোঁটা জলের চশমা।

চশমা

 ________________________
|          /__\          |
|         /    \         |
|        /      \        |
\_______/        \_______/

বৃষ্টিবিন্দুর

একটি রেইনড্রপ a দ্বারা চিহ্নিত করা হয় .। একটি বৃষ্টিপাত এলোমেলোভাবে চশমার লেন্সগুলিতে স্থাপন করা হয়। সুতরাং যখন রেইনড্রপ স্থাপন করা হয় তখন চশমাটি এমন দেখাতে পারে

 ________________________
|          /__\          |
|    .    /    \         |
|        /      \        |
\_______/        \_______/

যদি এটি একটি ফাঁকা স্থান ( ) .এ স্থাপন করা হয় তবে একটি চিত্রটিতে রাখা হয়। যদি এটি এমন কোনও স্কোয়ারে স্থাপন করা হয় যা ইতিমধ্যে বৃষ্টিপাত রয়েছে, তবে ড্রপ স্নাতক।

ড্রপ উপর পদক্ষেপ হয়

  • কোন ফোঁটা রাখা হয়নি:
  • 1 টি ড্রপ রাখা হয়েছে: .
  • 2 ফোঁটা রাখা: o
  • 3 ফোঁটা রাখা: O
  • 4+ ফোঁটা রাখা হয়েছে: @

বিধি

  • চিত্রটি এমনভাবে দেখতে হবে যেন এটি স্থানে থাকে। এর অর্থ হ'ল আপনি স্ক্রিনটি সাফ করতে পারেন বা স্ক্রিনটি "সাফ" করতে পর্যাপ্ত নিউলাইনগুলি মুদ্রণ করতে পারেন। আপনি পদক্ষেপের একটি তালিকা ফেরত দিতে পারবেন না। এই সম্পর্কে দুঃখিত, তবে আপনার চারপাশে কাজ করতে সক্ষম হওয়া উচিত।
  • স্ক্রিনটি "সাফ" করতে নিউলাইনগুলি আউটপুট দেওয়ার সময় আপনার চশমার মাঝে কমপক্ষে 3 টি নতুন লাইন থাকা উচিত।
  • কোডটি চশমা পুরোপুরি স্নাতক ডিগ্রি পূর্ণ না হওয়া পর্যন্ত চালিত হয় যতক্ষণ না আউটপুটটিকে এটির মতো দেখাচ্ছে:
     ________________________
    | @@@@@@@@@@ / __ \ @@@@@@@@@@ |
    | @@@@@@@@@ / \ @@@@@@@@@ |
    | @@@@@@@@ / \ @@@@@@@@@ |
    \ _______ / \ _______ /
  • বাইটস মধ্যে সংক্ষিপ্ত কোড ।

" চশমা পুরোপুরি স্নাতক ড্রপ পূর্ণ না হওয়া পর্যন্ত কোডটি চলে " সম্ভবত কোনও আনুমানিক ঘুম / প্রতীক্ষার সময় উল্লেখ করুন? 150 বা 250 এমএসের মতো?
কেভিন ক্রুইজসেন 24'17

2
চশমাটি যখন চূড়ান্ত আউটপুটটির মতো দেখায় তখন কি কোডটি থামতে হবে বা এটি চালিয়ে যেতে পারে তবে কেবল কিছু প্রভাবিত করে না?
TheLethalCoder

@ দ্য লেথাল কোডার চশমাটি পূর্ণ না হওয়া অবধি আমি কল্পনা করব, যেমনটি
অনুমান

ড্রপল্টের এলোমেলো পতন লেন্সগুলির বিট অংশে এমনকি লেন্সগুলিতেও এলোমেলোভাবে পড়তে হবে @, তাই না?
জেনকার 14

উত্তর:


11

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

document.write('<pre id=o>')
a=[...` _8_8_8
| 9 /__\\  9|
| 9/ 4\\ 9|
| 8/ 6\\ 8|
\\_7/ 8\\_7/`.replace(/.\d/g,s=>s[0].repeat(s[1]))]
s=" .oO@@"
g=_=>o.innerHTML=a.join``
f=(i=s.indexOf(a[j=Math.random()*a.length|0])+1)=>i?g(a[j]=s[i]):f()
g()
setInterval(f,1e3)

সম্পাদনা: @ শেগিকে ধন্যবাদ 2 4 বাইট সংরক্ষিত ।


3
উপরের বাম কোণে কিছু ভুল হয়ে যায়
J42161217

-1 কারণ এটি বাগড (জেনির মন্তব্য দেখুন)
ধ্বংসাত্মক লেবু

1
@ ডিসট্রিকটিবললিমন এর জন্য দুঃখিত, আমি ফায়ারফক্সের ক্লিপবোর্ডের একটি "বৈশিষ্ট্য" দ্বারা কামড়েছি ... এখনই ঠিক করা উচিত।
নিল

এর innerTextপরিবর্তে textContentএবং searchপরিবর্তে কয়েকটা বাইট সংরক্ষণ করুন indexOf। এবং এটির <pre id=oপরিবর্তে কেবল আরও কিছু এইচটিএমএল হিসাবে ব্যবহার document.writeকরে।
শেজি

1
@ শেগি গ্রেট সন্ধান করুন, ধন্যবাদ!
নীল

5

জাভা 8, 449 421 বাইট

v->{String q="########",g=" ________________________\n|##"+q+"/__\\##"+q+"|\n|#"+q+"/    \\#"+q+"|\n|"+q+"/      \\"+q+"|\n\\_______/        \\_______/\n\n\n";for(int t=0,n,x;g.matches("(?s).*[#\\.oO].*");Thread.sleep(150)){for(;(x=g.charAt(n=(int)(Math.random()*g.length())))!=35&x!=46&x!=111&x!=79;);if(t++>0)g=g.substring(0,n)+(x<36?".":x<47?"o":x<80?"@":"O")+g.substring(n+1);System.out.println(g.replace('#',' '));}}

ব্যাখ্যা:

এখানে চেষ্টা করুন। ( Thread.sleepসরানো হয়েছে যাতে আপনি তাত্ক্ষণিকভাবে ফলাফলটি দেখতে পারেন))

v->(){                      // Method without empty unused parameter and no return-type
  String q="########",g=" ________________________\n|##"+q+"/__\\##"+q+"|\n|#"+q+"/    \\#"+q+"|\n|"+q+"/      \\"+q+"|\n\\_______/        \\_______/\n\n\n";
                            //  The glasses (with inner spaces replaced by '#')
  for(int t=0,n,x;          //  Index integers
      g.matches("(?s).*[#\\.oO].*");
                            //   Loop (1) as long as the glasses still contain "#.oO"
      Thread.sleep(150)){   //   And sleep 150ms after each iteration to give the animation
    for(;                   //   Inner loop (2)
         (x=g.charAt(n=(int)(Math.random()*g.length())))!=35&x!=46&x!=111&x!=79;
                            //    To find the next '#', '.', 'o' or 'O' randomly
    );                      //   End of inner loop (2)
    if(t++>0)               //   Flag so it prints the initial glasses without a raindrop
      g=g.substring(0,n)+(x<36?".":x<47?"o":x<80?"@":"O")+g.substring(n+1);
                            //    Add a raindrop on this random position
    System.out.println(g    //   And print the glasses
        .replace('#',' ')); //   After we've replaced '#' with spaces
  }                         //  End of loop (1)
}                           // End of method

আউটপুট:

দ্রষ্টব্য: জিআইএফ-তে বিন্দুগুলি কিছুটা অদ্ভুত, তবে এটি আমার স্ক্রিনটোজিফ.এক্সিতে একটি সমস্যা ..
এখানে চিত্র বর্ণনা লিখুন


1
আপনি কি জানেন যে আমাকে কী চমকে দিচ্ছে, those অদ্ভুত বিন্দুগুলি (একইভাবে স্কেলড ডাউন-তে প্রযোজ্য ") সত্যিই দেখতে আমার পর্দার উপরে একটি সত্যিকারের জলের ড্রপ রয়েছে
খালেদ.কে

1
এটি @ @ v
জেনকারের

@ জেনকার যে দ্বিতীয় বারের মতো আপনি উত্তরে বলেছেন। আপনি কি বলতে চাইছেন দয়া করে ব্যাখ্যা করুন।
২১

@ র্যান্ডম ইউজার বেসিক্যালি, এই উত্তরের বর্তমান কোডটি এমন একটি স্পট খুঁজবে যা লেন্সগুলিতে এলোমেলোভাবে পড়ার পরিবর্তে, এটি পড়ার জন্য এখনও একটি @ নয় fall প্রয়োজনীয়তার মধ্যে "4+" মনে করে যে এটি যাওয়ার মতো ঘটনা নয় তবে এর পরিবর্তে একটি @ @ সহ একটি এলোমেলোভাবে লেন্সের উপর পড়ে। এটি কি সঠিক ব্যাখ্যা নয়?
জেনকার

@ জেনকার এটি কীভাবে এটি করে তা বিবেচ্য নয় , কেবল কোনও নিয়ম বা মানক লফোলগুলি লঙ্ঘন না করে এটি এটি করে। প্রশ্নটিতে আমি কখনই "এটির একটি অভিন্ন র্যান্ডম বিতরণ থাকতে হবে" বলিনি যাতে এই উত্তরটি ঠিক আছে।
২৪ শে

3

এফ #, পুনরাবৃত্তিযোগ্য 379 414 404 বাইট

open System
let z=String.replicate
let mutable s,d=z 54" ",new Random()
while Seq.exists((<>)'@')s do printfn" %s\n|%s/__\\%s|\n|%s/    \\%s|\n|%s/%7s%s|\n\\_______/%9s_______/\n\n"(z 24"_")(s.[..9])(s.[10..19])(s.[20..28])(s.[29..37])(s.[38..45])"\\"(s.[46..53])"\\";Threading.Thread.Sleep(1000);d.Next54|>fun i->s<-(s.[i]|>function|' '->"."|'.'->"o"|'o'->"O"|_->"@")|>(fun c->s.Remove(i,1).Insert(i,c))

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

  • -7 বাইটস @ ভিজউইককে ধন্যবাদ
    • String.replicate aliasing দ্বারা
    • প্রতিবার উল্লেখ করার পরিবর্তে সিস্টেমটি খোলার মাধ্যমে
  • -৩ বাইট যখন একটি লাইনে লুপটি কমিয়ে

আমি এই চ্যালেঞ্জের ভিত্তি ভালবাসি :)

এবং কানের পোকা জন্য ধন্যবাদ।

এফ #, 406 441 438 437 423 বাইট

open System
let z=String.replicate
let s,d=z 54" ",new Random()
let rec(!)s=s="";printfn" %s\n|%s/__\\%s|\n|%s/    \\%s|\n|%s/%7s%s|\n\\_______/%9s_______/\n\n"(z 24"_")(s.[..9])(s.[10..19])(s.[20..28])(s.[29..37])(s.[38..45])"\\"(s.[46..53])"\\";Threading.Thread.Sleep(1000);if Seq.exists((<>)'@')s then d.Next 54|>fun i-> !((s.[i]|>function|' '->"."|'.'->"o"|'o'->"O"|_->"@")|>(fun c->s.Remove(i,1).Insert(i,c)))else()
!s

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

  • স্ট্রিংয়ের সাথে তুলনা করে স্ট্রিংকে সীমাবদ্ধ করে -3 বাইট
  • -1 বাইট, ফাংশন নাম এখন "!" কল করার সময় একটি স্থান সংরক্ষণ করা
  • -7 বাইটস @ ভিজউইককে ধন্যবাদ
    • String.replicate aliasing দ্বারা
    • প্রতিবার উল্লেখ করার পরিবর্তে সিস্টেমটি খোলার মাধ্যমে
  • -1 বাইট, d.Next কল করার সময় প্রথম বন্ধনের দরকার নেই
  • -6 বাইট, ফাংশন এখন এক লাইন

ব্যাখ্যা

open System
let z = String.replicate    // define alias
let s, d = z 54 " ", new Random() // s holds a flat representation of the glasses.. glasses
let rec(!) s =
    s=""; // type s to string
    printfn" %s\n|%s/__\\%s|\n|%s/    \\%s|\n|%s/%7s%s|\n\\_______/%9s_______/\n\n"
        (z 24 "_")     // top of the glasses
        (s.[..9])      // slice
        (s.[10..19])   // and
        (s.[20..28])   // dice
        (s.[29..37])   // the
        (s.[38..45])   // glasses
        "\\"           // \ gets prepended with 6 spaces thanks to %7s
        (s.[46..53])
        "\\";          // same deal, just 8 spaces this time
    Threading.Thread.Sleep(1000);
    if Seq.exists((<>)'@') s then // if not everything's totally covered
        d.Next 54                 // get new random int < 54 (string has indices 0-53)
        |> fun i->                // passing is shorter than a let binding, saves two spaces and a new line
            !(                    // call the function again with new drop on glasses
              (s.[i]              // get part of the glasses drop fell on
              |>function
              |' '->"."           // promote drop
              |'.'->"o"
              |'o'->"O"
              |_->"@")
              |>(fun c-> s.Remove(i,1).Insert(i,c))) // and insert this in the string
    else ()
!s

আপনি কলগুলি এবং কলগুলি থেকে open Systemসরিয়ে 1 চর সংরক্ষণ করতে পারবেন ;)SystemRandom()Threading.Thread.Sleep()
ভিজউইক

আরও কয়েকটি অক্ষর শেভ করা হয়েছে
ভিজউইক

@ ভিজউইক ধন্যবাদ :) আমি সম্পাদনা করার সময় আরও কয়েকটি বাইট পেয়েছি
ব্রুনার

2

পাইথন 2, 365 328 বাইট

এটা কিছুটা ভাল ...

import time,random
g=' '+'_'*24+r"""
|xxX/__\Xxx|
|xX/    \Xx|
|X/      \X|
\_______/        \_______/""".replace('X','x'*8)
while 1:
 print'\n'*3+g.replace('x',' ')
 s='x.oO@@'
 if all(c not in g for c in s[:-2]):exit()
 i,c=random.choice([(i,s[s.index(j)+1])for i,j in enumerate(g)if j in s])
 g=g[:i]+c+g[i+1:]
 time.sleep(1)

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

উপরের লিঙ্কটি 3 এর পরিবর্তে 30 টি লাইন ব্যবহার করে, তবে আপনি যদি নিজের ব্রাউজার উইন্ডোটিকে উল্লম্বভাবে ছোট হতে চান তবে এটি 3 দিয়ে দেখতে পাবেন। পরিবর্তন time.sleep(1)করার জন্য time.sleep(.1)10x গতির জন্য।


2

সি, 313 309 305 304 বাইট

বেশ কিছুটা নিচে নামতে হবে;

c;f(r,q){for(char*m=" ________________________\n|**********/__\\**********|\n|*********/    \\*********|\n|********/      \\********|\n\\_______/        \\_______/\n";c<216;r=rand()%144,m-=135)for(system("clear");*m++;putchar(*m^42?*m:32))q=--r?*m:*m^42?*m^46?*m^111?*m^79?*m:64:79:111:46,c+=q!=*m,*m=q;}

আমি এটি নিম্নলিখিত পরীক্ষার স্টাব দিয়ে চালাচ্ছি

main()
{
    srand(time(0));    
    f();
}

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


2

রুবি , 237 224 228 218 206 198 197 বাইট

g=" #{?_*24}
|x##/__ax##|
|x#/    ax#|
|x/      ax|
a#{u=?_*7}/xa#{u}/


".gsub ?x,?#*8;217.times{|t|puts g.tr('#a',' \\');()while t<216&&g[x=rand*106]!~/[#.oO]/;g[x]=g[x].tr '#.oO','.oO@';sleep 1}

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

পূর্ববর্তী উত্তরটি ভুল ছিল, এটি একটি @ এ পড়ার মতো বৃষ্টিপাতকে বিবেচনায় নেয় নি। স্পষ্টতই প্রয়োজন নেই। কিছু বাইট সংরক্ষণ করা হয়েছে।

এটি নিক্ষিপ্ত ত্রুটির সাথে বন্ধ হয়ে যায় তবে পুরো চশমা মুদ্রণের সাথে সাথে এটি অবশ্যই শেষ হয়ে যায়।

  • ল্যাম্বডায় প্রিন্টিং রেখে 13 টি বাইট সংরক্ষণ করা হয়েছে এবং ট্র (ডু) ব্যবহারের জন্য অ্যাসাইনমেন্টটি পরিবর্তন করে
  • 1 সেকেন্ডের প্রয়োজনীয়তার সাথে 8 বাইট ক্ষতি হয়।
  • ইন্টারপোলেশনের পরিবর্তে জিএসব ট্রিক ব্যবহার করে 10 বাইট লাভ ( এমবিম্ব 700 এর পাইথন উত্তরটি দেখে ও অভিযোজিত )।
  • ল্যাম্বদা প্রিন্টিং সরিয়ে 12 বাইট লাভ করে এখন যে মুদ্রণটি কেবল একবার>>> লেখা হয় written
  • সব করে 1 বাইট লাভ \\হতে aTR ভিতরে, তারপর পরিবর্তন ফিরে
  • অন্যটি x(দুহ) দিয়ে শেষ লাইনে পরিবর্তনগুলি স্থান পরিবর্তন করে 7 বাইট লাভ । আপনারা কেউ কেউ যদি ভাবছেন যে এটি কেন প্রধান লুপকে প্রভাবিত করে না: প্রধান লুপটি এটি নির্ধারণের জন্য শেষ লাইনটিকে বিবেচনা করে না x
  • চশমার শীর্ষের শেষে অপসারণ করে 1 বাইট লাভ

ইয়ে <200 বাইট: ডি

জিআইএফ:

gif


3
ভবিষ্যতের রেফারেন্সের জন্য আপনি নিজের আগের উত্তরটি সম্পাদনা করতে পারেন যা এটি মুছে ফেলার পরিবর্তে এবং একটি নতুন উত্তর যুক্ত করার পরিবর্তে কাজ করে।
TheLethalCoder

আপনি কি এই দৌড়ের একটি জিআইএফ যোগ করতে পারেন?
-15 এ 15 মিনিটে কেয়ারড কোইনরিঙ্গিংহিং

নিবন্ধন করুন
জেনকার

1

বাশ, 576 510 429 416 বাইট

j()(IFS=
printf "$*")
for i in {53..0};{ a[$i]= 
b[$i]=@;}
while(($i == 0));do clear
echo  " ________________________
|`j ${a[@]::10}`/__\\`j ${a[@]:10:10}`|
|`j ${a[@]:20:9}`/    \\`j ${a[@]:29:9}`|
|`j ${a[@]:38:8}`/      \\`j ${a[@]:46}`|
\_______/        \_______/"
[ `j ${a[@]}` = `j ${b[@]}` ]&&{
i=1
}
sleep 1
d=`shuf -i0-53 -n1`
c=${a[$d]}
case $c in  )a[$d]=.;;.)a[$d]=o;;o)a[$d]=0;;0)a[$d]=@;esac
done

বাহ, অনেক গল্ফ কারও যদি আরও গল্ফ করার জন্য কোনও ধারণা থাকে তবে আমি পরামর্শের জন্য উন্মুক্ত

এটি নিজে চেষ্টা করো! 60 মিনিটের সীমাবদ্ধতার কারণে এটি ঘুম মন্তব্য করেছে

এখানে জিআইএফ:

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



0

গণিত, 438 বাইট

f=Flatten;p=Print;z=32;q=95;l=124;t=Table;v=z~t~8;s={f@{z,q~t~24,z},f@{124,z~t~10,47,q,q,92,z~t~10,l},f@{l,z~t~9,47,z~t~4,92,z~t~9,l},f@{l,v,47,z~t~6,92,v,l},f@{92,q~t~7,47,v,92,q~t~7,47}};c=0;Monitor[While[c<54,a=s[[i=RandomInteger@{2,4},j=RandomChoice[Range[2,13-i]~Join~Range[14+i,25]]]];If[a==z,s[[i,j]]=46,If[a==46,s[[i,j]]=111,If[a==111,s[[i,j]]=48,If[a==48,s[[i,j]]=64]]]];c=Count[Flatten@s,64];Pause@1],Column@FromCharacterCode@s]

এখানে একটি 10x গতির ফলাফল জিএফ

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


কখনও ম্যাথামেটিকাল ব্যবহৃত কিন্তু আপনি নির্ধারণ করতে পারে Table, 95এবং 32?
ইয়ার

হিসাবে t=Table x = 32এবং y = 95?
২৪ শে

হ্যা অবশ্যই. আমি গতকাল থেকে এটি প্রচুর গল্ফ করেছি
J42161217

আপনি সর্বশেষের Flattenসাথে প্রতিস্থাপন করে 6 বাইট অপসারণ করতে পারবেন f?
কেয়ারড কোইনরিঙ্গিংহিং

0

পিএইচপি, 262 254 বাইট

for($t=" 8_8_8_
|Y9Y/__\Y9Y|
|9Y/4 \9Y|
|8Y/6 \8Y|
\\7_/8 \\7_/";$c=$t[$i++];)$s.=$c<1?$c:str_repeat($t[$i++],$c);for(;$c=$s[++$k];)$c!=Y?:$s[$m[]=$k]=" ";for(;$u<216;print str_pad($s,999,"
",sleep(1)))$u+=($c=".oO@"[$a[$p=rand(0,53)]++])&&$s[$m[$p]]=$c;

এটি দিয়ে চালান -nRবা অনলাইনে চেষ্টা করুন

ভাঙ্গন

# prep 1: generate template from packed string
for($t=" 8_8_8_\n|Y9Y/__\Y9Y|\n|9Y/4 \9Y|\n|8Y/6 \8Y|\n\\7_/8 \\7_/";
    $c=$t[$i++];)$s.=$c<1?$c:str_repeat($t[$i++],$c);
# prep 2: map substituted spaces and replace with real spaces
for(;$c=$s[++$k];)$c!=Y?:$s[$m[]=$k]=" ";
# loop until glasses are fully wet:
for(;$u<216;
    # 4. print glasses prepended with 865 newlines
    print str_pad($s,999,"\n",
    # 3. wait 1 second
        sleep(1)))
    $u+=($c=".oO@"[
        $a[$p=rand(0,53)    # 1. pick random position
        ]++])               # 2. and increment
        &&$s[$m[$p]]=$c         # if not fully wet, graduate drop
    ;                           # and increment drop count ($u+=)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.