সরলবাদী লাভা ল্যাম্প


18

পরিচিতি:

আমি মনে করি লাভা প্রদীপ কী তা প্রত্যেকে জানে, তবে যদি তারা তা না করে:

এখানে চিত্র বর্ণনা লিখুন
(চিত্র উত্স)

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

ল্যাম্পের বেসটি তাপমাত্রায় উচ্চতর আকার ধারণ করতে প্রায় 45-60 মিনিট সময় নেয় যা শক্ত মোমকে তরল মোমকে পরিবর্তন করতে পারে (যদি প্রদীপটি ঘরের তাপমাত্রায় কোনও জায়গায় অবস্থিত থাকে)।

উইকিপিডিয়ায় আরও তথ্য, যা উপরের কিছু পাঠ্যের উত্স হিসাবেও ব্যবহৃত হয়।

চ্যালেঞ্জ:

nআমরা লাভা প্রদীপটি চালু করার পরে যে পরিমাণ মিনিট কেটে গেছে তার ইতিবাচক পূর্ণসংখ্যা দেওয়া হয়েছে, পাঁচটি স্তরের পূর্ণসংখ্যার উপর ভিত্তি করে লাভা ল্যাম্পের এলোমেলো অবস্থা আউটপুট দেয়।

এই চ্যালেঞ্জের জন্য আমরা বলব লাভা ল্যাম্পে মোট 1000 ইউনিট মোম রয়েছে এবং আমাদের পাঁচটি স্তর রয়েছে যেখানে মোমটি থাকতে পারে।

1) যদি n45 এর নীচে থাকে তবে লাভা ল্যাম্পটি এখনও উত্তাপিত হচ্ছে, সুতরাং আউটপুটটি 1000নীচের অংশে চারটি খালি লাইন হবে :





1000

2) যদি nপরিসীমা থাকে [45, 60)তবে লাভা ল্যাম্পটি তাপমাত্রায় মোমের ঘুরে বেড়াতে পর্যাপ্ত পরিমাণে বেড়েছে, তবে এখনও খুব বেশি নয়। মোমটি তৃতীয় স্তর পর্যন্ত পৌঁছে যায়।
3) যদি nহয় 60বা উচ্চতর, মোম পাঁচ স্তরের কোনো সময়ে হতে পারে।

সুতরাং nইনপুট হিসাবে ধনাত্মক পূর্ণসংখ্যা দেওয়া , আমরা তিনটি নিয়মকে মাথায় রেখে একটি এলোমেলো অবস্থা আউটপুট করব ।

এখানে কিছু উদাহরণ আউটপুট রয়েছে:

nযে কোনওটির সম্ভাব্য আউটপুট >= 45:



523
106
371


913

87

nযে কোনওটির সম্ভাব্য আউটপুট >= 60:

73
113
312
5
497
284
55
637

24

এর জন্য ধ্রুবক আউটপুট (এবং nযে কোনওটির জন্য <= 44সম্ভাব্য আউটপুট n):





1000

চ্যালেঞ্জ বিধি:

  • খালি লাইনগুলি থাকতে পারে, যদিও এটির উপরে স্তরটি খালি নয়।
  • কেবল 0কোনও লাইনে অনুমোদিত নয়। পরিবর্তে খালি থাকতে হবে।
  • আউটপুট কিছুটা নমনীয়। উপরের মত নতুন লাইন সীমিত ফলাফলের পরিবর্তে আপনাকে স্ট্রিং / অবজেক্টের একটি তালিকা / অ্যারে আউটপুট দেওয়ার অনুমতি দেওয়া হচ্ছে। আমি যে কারণে স্ট্রিং / অবজেক্ট বলছি তা উপরের নিয়মের কারণে। একটি খালি লাইন হওয়া উচিত "", null, [], ইত্যাদি, কিন্তু হতে পারে না 0বা নেতিবাচক পূর্ণসংখ্যা (না এটা হতে পারে false) (অর্থাত ["", "", 913, "", 87]জন্য n >= 45)। আপনাকে আউটপুট বিপরীত করার অনুমতি দেওয়া হয় (অর্থাত্ 1000\n\n\n\nপরিবর্তে \n\n\n\n1000বা [87, null, 913, null, null]পরিবর্তে [null, null, 913, null, 87])।
  • সংখ্যাগুলি সমস্ত পূর্ণসংখ্যার হওয়া উচিত। 0দশমিক মান হিসাবে দশমিক হতে পারে , তবে সংখ্যার কোনওটিরই দশমিক সংখ্যা হওয়া উচিত নয় এবং পূর্ণসংখ্যার সর্বদা হুবহু যোগফল হওয়া উচিত 1000
  • উপর ভিত্তি করে সমস্ত সম্ভাব্য এলোমেলো আউটপুটগুলির nঘটনার অ শূন্য সম্ভাবনা থাকা উচিত।
  • একটি চলন্ত নতুন লাইনের (সুতরাং ছয়টি লাইন আউটপুট রয়েছে) অনুমোদিত।

সাধারণ নিয়ম:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার পক্ষে যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • স্ট্যান্ডার্ড নিয়মগুলি আপনার উত্তরের জন্য প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং রিটার্ন-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে আপনার কোডের জন্য একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন।
  • এছাড়াও, আপনার উত্তরের জন্য একটি ব্যাখ্যা যুক্ত করা অত্যন্ত প্রস্তাবিত।


একটি ফাঁকা স্তর একটি একক স্থান দিয়ে প্রতিনিধিত্ব করা যাবে?
আর্নল্ড

@ আরনাউল্ড শিওর 0Negativeণাত্মক সংখ্যা, বা বাদে কিছু হতে পারে false
কেভিন ক্রুইজসেন

আউটপুট সর্বদা 5 স্তর, এমনকি যখন হয় n < 60?
Emigna

@ এমিগনা হ্যাঁ, আউটপুট সর্বদা 5 স্তর। জন্য n < 45মাত্র 1 স্তর তবে ভরা হয়, যা (উপরে বা নীচে আপনি অনুক্রমে এটা আউটপুট উপর নির্ভর করে) 1000। সঙ্গে 45 <= n < 60পাঁচটি তিন, এবং n >= 60পাঁচটি। তবে আউটপুটে সর্বদা পাঁচটি 'লাইন' থাকবে।
কেভিন ক্রুইজসেন

উত্তর:


5

ম্যাথগল্ফ , 21 20 বাইট

5º*♪{k[K∞╟(]m<Σ∞wΦ}σ

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

এটি আমার নতুন ভাষায় আমার প্রথম উত্তর। আমি আমার সমাধানটি এমিগানার 05AB1E সমাধানের উপর ভিত্তি করে তৈরি করেছি, তবে এটি ম্যাথগল্ফের কিছু ঝরঝরে বৈশিষ্ট্য ব্যবহার করে এটি একটি ছোট বিটকে আরও খাটো করে তুলতে চাই।

ব্যাখ্যা

5º*                   push 5, [0], multiply (yielding [0,0,0,0,0]
   ♪                  push 1000
    {                 start block
     k                push input as integer
      K∞              push 22 and double it, yielding 44
        ╟(            push 60 and decrease, yielding 59
          α           wrap last two elements in array, yielding [44,59]
           m<         map is less than, giving [0,0], [1,0] or [1,1]
             Σ        sum array, giving 0, 1 or 2
              ∞       double, giving 0, 2 or 4
               w      push random integer in range
                Φ     increase array element
                 }    execute for loop (loops 1000 times)
                  σ   convert to string and remove leading zeroes (implicit map)

যদি নিজের মধ্যে এই চ্যালেঞ্জের জন্য বৈশিষ্ট্যগুলি অন্তর্নির্মিত না হয় তবে প্রতিদ্বন্দ্বী ট্যাগটি প্রয়োজন হবে না। গত বছরের মাঝামাঝি থেকে প্রতিদ্বন্দ্বিতা করা এখন আর জিনিস নয় thing এটি খুব নতুন যেহেতু আমি ধরে নিয়েছি এখনও আপনার ভাষার জন্য কোনও অনলাইন সংকলক নেই? পরিবর্তে আপনি যাচাইকরণের জন্য কিছু স্ক্রিনশট (বা স্ক্রিনশটগুলিতে লিঙ্কগুলি পোস্টটি খুব বেশি বিশৃঙ্খলা করতে পারে) যুক্ত করতে পারেন? এবং আপনার ভাষা ট্রাইআইটঅনলাইনে যুক্ত করা যায় কিনা তা জানতে আমি ডেনিসের সাথে যোগাযোগ করব
কেভিন ক্রুইজসেন

2
প্রতিক্রিয়া জন্য ধন্যবাদ কেভিন ক্রুজসেন! আমি কিছু স্ক্রিনশট যুক্ত করব, এবং আমি টিআইওতে ভাষা পাওয়ার বিষয়ে কাজ করছি। আমি ডেনিসের সাথে যোগাযোগ করার পরে আমি অনুভব করি যে আমি ক্রমাগত নতুন বৈশিষ্ট্য যুক্ত করছি না।
সর্বোচ্চ

আপনি কি আপনার ভাষার জন্য একটি ঘর তৈরি বিবেচনা করেছেন ? আমি এটি শিখতে খুব আগ্রহী!
জো কিং

@ জোকিং আপনার আগ্রহী শুনে খুশি! আমি এই সপ্তাহান্তে কিছুক্ষণ একটি ঘর তৈরি করার চেষ্টা করব। আমি ডেনিসকে কেবল টিআইও-তে ভাষা পেয়েছি, আমি এটিকে সবার কাছে অ্যাক্সেসযোগ্য করার জন্য কাজ করছি!
সর্বোচ্চ

@ জোকিং আমি ম্যাথগল্ফের জন্য একটি ঘর তৈরি করেছি । আমি যত তাড়াতাড়ি সম্ভব যেকোন প্রশ্নের উত্তর দেওয়ার চেষ্টা করব, আমি জানি ডকুমেন্টেশনটি কিছুটা অসম্পূর্ণ।
ম্যাক্সবি

8

পাইথন 2 , 117 113 108 107 106 105 বাইট

from random import*
def f(n):a=['']*5;exec"i=randint(0,(n>44)+(n>59)<<1);a[i]=(a[i]or 0)+1;"*1000;print a

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

বিপরীত তালিকা ফেরত দেয় (প্রথমে নীচে)


মন্তব্যে স্ট্যাকওভারফ্লো উত্তরের দ্বারা অনুপ্রাণিত সংস্করণ (প্রান্তক্যাসগুলি সম্ভবত বেশি সম্ভাবনা রয়েছে):

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

from random import*
def f(n):a=sorted([1000]*5+sample(range(1001)*5,(n>44)+(n>59)<<1));print[y-x or''for x,y in zip([0]+a,a)[:5]]

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


আপনার কোডটি কীভাবে কাজ করে আমি ঠিক জানি না, তবে প্রতিটি রাজ্যে কি অ-শূন্য হওয়ার সম্ভাবনা থাকে? আপনার সমস্ত সংখ্যার কাছাকাছি ঝুলে আছে 333বা 200যথাক্রমে 3 বা 5 অংশ জন্য। আমি 0বা এর দিকে কোনও স্পাইক / বিদেশী দেখছি না 1000। বা নিকটস্থ 333এবং পূর্ণসংখ্যার তুলনায় কেবলমাত্র জ্যোতির্বিজ্ঞানের দিক থেকে ছোট (তবে এখনও শূন্য নয়) এর সম্ভাবনাগুলি 200কি?
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুইজসেন 1000 লাভা-ইউনিটগুলির প্রত্যেককে একটি এলোমেলো বিন ( 0বা 0-2বা 0-4) এ স্থাপন করা হয় এবং গণনা করা হয়। এর মধ্যে দুজনের মধ্যে কারও মধ্যে যাওয়ার সম্ভাবনা নেই, তবে খুব কম।
টিফিল্ড

আহ, ঠিক আছে। এখন আমি আপনার কোডটি ইতিমধ্যে আরও ভালভাবে বুঝতে পারি। ধন্যবাদ! আমার কাছ থেকে +1
কেভিন ক্রুইজসেন

7

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

বিপরীত অ্যারেটি ফেরত দেয় যেখানে খালি স্তরগুলি একটি স্থান দিয়ে পূর্ণ থাকে।

t=>(a=[...'     '],g=k=>k?g(k-1,a[Math.random()*(t>59?5:t<45||3)|0]++):a)(1e3)

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

মন্তব্য

t => (                      // t = input
  a = [...'     '],         // a[] = output array, initially filled with 5 spaces
  g = k =>                  // g = recursive function taking an iteration counter k
    k ?                     //   if k is not equal to zero:
      g(                    //     do a recursive call:
        k - 1,              //       decrement k
        a[                  //       update a[]:
          Math.random() * ( //         pick a random slot:
            t > 59 ? 5 :    //           among all 5 slots if t > 59
            t < 45          //           force the 1st slot if t < 45
            || 3            //           among the 3 first slots otherwise
          ) | 0             //         round the above result to an integer
        ]++                 //       increment the wax amount on this slot
      )                     //     end of recursive call
    :                       //   else:
      a                     //     stop recursion and return a[]
)(1e3)                      // initial call to g() with k = 1000

পাইথনের উত্তরের জন্য আমি যে মন্তব্য করেছি তার মতোই আমারও একই প্রশ্ন রয়েছে : প্রতিটি রাজ্যে কি ঘটনার অ-শূন্য সুযোগ রয়েছে?
কেভিন ক্রুইজসেন

1
1090

রোফেল, উল্কাটির সাথে দুর্দান্ত উপমা। ;) আমি এখন দেখতে পাচ্ছি যে আপনার পদ্ধতিটি পাইথন উত্তরের অনুরূপ যে এটি 1000 এর একটি গণনা অবধি অ্যারেতে 3 বা 5 স্পটের একটিতে মান রাখে values ​​সুন্দর উত্তর, সুতরাং আমার কাছ থেকে +1।
কেভিন ক্রুইজসেন

6

আর , 85 84 বাইট

function(n)write(ifelse(t<-table(cut(runif(1e3,2*(n<60)+3*(n<45),5),0:5)),t,""),1,1)

-1 বাইট @ জিউজ্পে ধন্যবাদ

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

ব্যাখ্যা (অবরুদ্ধ):

function(n){
      # Generate 1000 random uniform numbers in [5,5] (if n<45),
      # in [2,5] (if 45<=n<60) and in [0,5] (if n>=60).
    x = runif(1e3,2*(n<60)+3*(n<45),5) 
      # Code each by the number of the interval it falls in (0,1],(1,2]...(4,5]
    cx = cut(x,0:5)
      # Tabulate the intervals. Because cut() returns a factor,
      # zero counts are included 
    t = table(cx)
      # Vector-wise replace zero elements with "" and cat out, 1 per line.
    t1 = ifelse(t,t,"")
    write(t1,1,1)
}

যদি NAখালি লাইন / উপাদান হিসাবে অনুমোদিত হয় তবে এখানে একটি 77 বাইট সমাধান ( এটি অনলাইনে চেষ্টা করুন! ) বা একটি 80 বাইট সমাধান ( অনলাইনে এটি চেষ্টা করুন! ) যদি উপাদানগুলির নামগুলি সমস্যা হয়
ডাকমায়ার

6

সি (জিসিসি) , 131 , 116 , 90 , 89 , 87 বাইট

L(l,a,v,A){for(A=5,v=1e3;A--;v-=a)printf("%d\n"+!a*2,a=l>59|A<3&l>44?rand()%-~v:!A*v);}

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

আপডেট : মূলটিতে একটি বাগ ঠিক করা। অতিরিক্ত 15 বাইট হ্রাস করে সহায়ক সহায়তায় ফাংশনযুক্ত।

আপডেট 2 : -25 বাইটস এরিকএফকে ধন্যবাদ।

আপডেট 3 : -1 বাইট সিলিংক্যাট ধন্যবাদ।

Degolf

L(l,a,v,A){
    for(A=5,v=1e3;A--;v-=a)
        printf("%d\n"+!a*2, // No clue how this works anymore, but it'll advance the pointer 
                            // to the string constant when a number shouldn't be printed.
        a=l>59|A<3&l>44?rand()%-~v // Random integer to print in [0, v]
        :!A*v); // If bottom layer, return remaining volume
}

আপনি puts()মুদ্রণটিকে একক মধ্যে সংমিশ্রণ করে printf()এবং বিয়োগফলটি লুপের শেষে রেখে দিতে পারেন। এছাড়াও, আমি মনে করি আপনাকে srand()কলার মধ্যে আরম্ভ করার অনুমতি দেওয়া হয়েছে । এটি অনলাইন চেষ্টা করুন!
এরিক এফ

আমি বুঝতে পেরেছি যে আমি "কোনও শূন্য নয়" নিষেধাজ্ঞা মিস করেছি। এখানে স্থির সংস্করণটি রয়েছে: এটি অনলাইন চেষ্টা করে দেখুন!
এরিকএফ


গ্রেট; আমি একটি অতিরিক্ত বাইট দ্বারা এটি নিচে গল্ফ।

1
এছাড়াও, আমরা এটা করেছি! আমরা পাইথনকে মারলাম!

5

05 এ বি 1 ই , 27 26 25 বাইট

আদনানকে একটি বাইট সংরক্ষণ করে । কেভিন ক্রুইজসেনকে
ধন্যবাদ দিয়ে আরও একটি বাইট সংরক্ষণ করা হয়েছে

5Å0₄FD„,;ÇI‹O·ÝΩ©è>®ǝ]ε0Û

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

ব্যাখ্যা

5Å0                         # initialize with a list of 5 zeroes
   ₄F                       # 1000 times do:
     D                      # duplicate the list
      „,;ÇI‹                # check if the input is larger than 44 and/or 59
            O·              # sum and double, yielding (0,2 or 4)
             ÝΩ             # pick a random number between and 0 and the number above
               ©è           # get the count in that level
                 >          # increment it
                  ®ǝ        # insert it at the same position
                     ]      # end loop
                      ε0Û   # remove leading zeroes on each level

1
চমৎকার উত্তর! আপনি যেভাবে ব্যবহার করেছেন 5Å0এবং ǝএবং ε0Ûশেষে তা পছন্দ করি। আমি আরও ছোট কিছু নিয়ে আসার চেষ্টা করেছি, কিন্তু আমি পারিনি। আমার মনে হচ্ছে এটি একরকম এখনও গল্ফ হতে পারে তবে আমি বর্তমানে এটি দেখছি না (সম্ভবত এটি এটি করতে পারে না এবং এটি কেবল একটি এলোমেলো অনুভূতি)। সংক্ষিপ্ত পরিবর্তে •A–•60в1 বাইট দীর্ঘ 44 59‚আর ε0Ûপ্রতিস্থাপন 0খালি স্ট্রিং সঙ্গে গুলি এছাড়াও, সবচেয়ে কম সম্ভব হবে বলে মনে হয় যেহেতু 0Kকেবল 0 আইটেম সম্পূর্ণরূপে সরিয়ে ফেলবে এবং কোনো অঙ্ক সরিয়ে ফেলা হবে 0সব সংখ্যায়।
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুইজসেন: হ্যাঁ আমি আরও সংক্ষিপ্ততর কাজ করার জন্য সন্ধান করেছি এবং দেখেছি 44 59‚, কিন্তু আমি এটি খুঁজে পাচ্ছি না ( •H|•2ôএকই গণনা)। আমার পূর্ববর্তী সমাধান (এছাড়াও ২ by বাইট) ব্যবহৃত হয়েছে 45এবং 60যা বিভিন্ন উপায়ে উত্পন্ন করা সহজ, তবে আমি মনে করি এটি অবৈধ ছিল কারণ এটি ইনপুটের উপর নির্ভর করে 1 , 3 বা 5 স্তর আউটপুট করে এবং সর্বদা 5 নয়
এমিগানা

আহ, •H|•2ôপ্রকৃতপক্ষে একটি স্মার্ট উপায়, এটি সম্পর্কে ভাবেনি। এবং এটি প্রকৃতপক্ষে 5 লাইন আউটপুট করা উচিত। আমি আপনার পূর্ববর্তী উত্তরটি সত্যই দেখেছি এবং এটি সম্পর্কে মন্তব্য করতে চলেছে কেবলমাত্র এটির জন্য 1 লাইন আউটপুট করা হয়েছে n < 45, তবে তারপরে আপনি এটি মুছে ফেলেছেন । আপনি অন্য 27-বাইট সমাধান খুঁজে পেয়েছেন খুশি। :)
কেভিন ক্রুইজসেন

2
আমার মনে ŽH|2ôহয় আপনি যা খুঁজছেন?
আদনান

2
@ কেভিন ক্রুজসেন এটি ঠিক এর মতোই কাজ করে। 05AB1E ব্যবহার করে পূর্ববর্তী উত্তরগুলি ব্যবহার করে কিছু গবেষণা করেছিলেন এবং আমি পুনর্লিখনে যুক্ত করা বিষয়গুলির মধ্যে এটি ছিল। এখনই এটির অন্য কোনও ব্যবহারের মামলা নেই।
আদনান

4

জাভাস্ক্রিপ্ট (নোড.জেএস) , 87 86 বাইট

f=(n,w=1e3,s=5,r=n<45|n<60&s<4|s<2?w:Math.random()*w|0)=>s?`${r||""}
`+f(n,w-r,s-1):""

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

83-বাইট সমাধান ( (n/15-2|0)*s<4) প্রথমে সংরক্ষিত কারণ আমাকে আরও বড় করে পরীক্ষা করতে হবে n

আপডেট: হ্যাঁ, (n/15-2|0)*s<4বৃহত্তর জন্য কারণ কাজ করে না nকারণ nবড় পরিমাণ যোগফল 1000 এ পৌঁছাতে ব্যর্থ করে।



3

পরিষ্কার , 215 বাইট

import StdEnv,Math.Random,Text
? ::!Int->Int
?_=code{ccall time "I:I"
}
$n#l=take(max(2*min(n/15-2)2)0+1)(genRandReal(?0))
#l=map toInt[1E3*e/sum l\\e<-l]
|sum l==1000=map(\v|v>0=v<+"\n"="\n")(l++repeat 0)%(0,4)= $n

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

তাই পরিশেষে আমি আমদানির চেয়ে একটি র্যান্ডম বীজ পেতে একটি খাটো পথ পেয়েছি System._Unsafe, System.Timeএবং ব্যবহার toInt(accUnsafe time)...
আর ছেলে codegolf আত্মা সত্যিই এটা -, সি একটি কল এম্বেডিং স্বাভাবিকভাবে মূল্যায়ন নিশ্চিত করতে ব্যবহৃত বিশ্বের রাষ্ট্র টাইপ উপেক্ষা যেমন জিনিস ক্রম।


3

জাভা (জেডিকে 10) , 121 117 113 111 বাইট

m->{for(int w=1000,j,i=5;i-->0;w-=j=i>0?j*=Math.random():w,System.out.println(j<1?"":j))j=m>59|m>44&i<3?w+1:0;}

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

এটি শীর্ষে আরও মোম রাখার দিকে পক্ষপাতদুষ্ট, তবে মোমের কোনও আইনি ব্যবস্থা প্রদর্শিত হওয়ার জন্য তাত্ত্বিকভাবে এটি সম্ভব।

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

মানব-পঠনযোগ্য জাভাতে:

(int minutes /* golfed variable m */) -> {
  int waxRemaining = 1000; // golfed variable w

  // golfed version goes from index 4 to 0 in a bit of a roundabout way
  // starting at 5 but decrementing right away
  for (int level = 4 /* golfed variable i */; level <= 0; level--) {
    // golfed variable j
    // the golfed version initializes this to (waxRemaining + 1)
    // in order to juice out some extra bytes during the Math.random() call
    int waxAtLevel = 0;

    // the golfed version does all of these ifs as ternary operations
    // and avoids using 2-character operators wherever possible
    // so e.g. "a == 0" becomes "a<1" and "a && b" becomes "a&b"
    // since here we are certain things can't be negative,
    // and took a good look at the Java operator precedence cheat-sheet
    // to make sure "&" and "|" would work properly to give a truthy value
    if (level == 0) {
      // if we are at the bottom level, just put the rest of the wax there
      waxAtLevel = waxRemaining;
    } else if (minutes >= 60 || (minutes >= 45 && level < 3)) {
      // otherwise if we are at a legal level put a random portion of the remaining wax there
      // note: the random portion can be between 0 and waxRemaining inclusive
      waxAtLevel = (int) (Math.random() * (waxRemaining + 1));
    }

    if (waxAtLevel > 0) {
      // only print the amount of way at this level if its greater than 0
      System.out.print(waxAtLevel);
    }
    System.out.println();

    waxRemaining -= waxAtLevel;
  }
}

2
Math.random()*(w+1)Math.random()*-~w-2 বাইট জন্য হতে পারে । রেফারেন্স হিসাবে এখানে সম্পর্কিত টিপ। । চমৎকার উত্তর! আমার কাছ থেকে +1 সম্পাদনা: প্রকৃতপক্ষে, আরও 2 বাইট jঅস্থায়ীভাবে ভেরিয়েবল হিসাবে ব্যবহার করে সংরক্ষণ করা যায় w+1(যেহেতু এটি প্রিন্টের পরে ঠিক পরে ওভাররাইট করা হবে) এবং j*=Math.random()পরিবর্তে ব্যবহার করুন যাতে আপনার কাস্টের প্রয়োজন হবে না (int)( 117 বাইট )।
কেভিন ক্রুইজসেন

পছন্দ করুন এছাড়াও আমি কেবল লক্ষ্য করেছি যে &i>2শর্তটি প্রয়োজনীয় নয়
স্যামায়ননো

3

পাওয়ারশেল , 188 162 বাইট

param($m);$t=0;$a=,0*5;$s=if($m-lt45){4}elseif($m-lt60){2}else{0};$s..4|%{$t+=$a[$_]=if($_-eq4){1e3-$t}elseif($t-ne1e3){Random(1000-$t)}}$a|%{if($_){$_}else{''}}

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

@ কেভিন ক্রুইজসেন -2 বাইটগুলি optionচ্ছিক
গেট-ক্রিয়া
-20 বাইটগুলি সংক্ষিপ্ত করে লুপটি সরিয়ে এবং স্পেসগুলি সরিয়ে দিয়ে -4 বাইট


হাই, পিপিসিজিতে আপনাকে স্বাগতম! দুর্দান্ত প্রথম উত্তর! আমি কিছু বেসিক পরীক্ষা করেছি, এবং সবকিছু দুর্দান্ত কাজ করছে বলে মনে হচ্ছে। আমি পাওয়ারশেল সম্পর্কে সবেমাত্র কিছু জানি, তবে কি এতে পরিবর্তন else{if($t-ne 1e3){Get-Random(1000-$t)}}করা সম্ভব elseif($t-ne 1e3){Get-Random(1000-$t)}? আমি দেখতে পেয়েছি আপনি আপনার কোডটিতে elseifআগে ব্যবহার করেছেন , সুতরাং এটি আপনাকে 2 বাইট সংরক্ষণ করতে হবে। এছাড়াও, পাওয়ারের মধ্যে গল্ফ করার টিপস বা <সমস্ত ভাষায়> গল্ফ করার টিপস আরও কিছুটা অনুপ্রেরণা দিতে পারে? উপভোগকর তোমার থাকা! :)
কেভিন ক্রুইজসেন

1
ifelse সম্পর্কে সম্পূর্ণ সঠিক। প্রক্রিয়া শুরুতে এর অন্য অংশটি সরানো হয়েছে। লিঙ্ক কিছুটা অনুপ্রেরণাও দিয়েছে!
এডউইন

2

পাস্কাল (এফপিসি) , 192 190 বাইট

var n,a:word;z:array[0..4]of word;begin read(n);if n>44then a:=a+3;if n>59then a:=a+2;Randomize;for n:=0to 999do inc(z[random(a)]);for n:=0to 4do if z[n]>0then writeln(z[n])else writeln end.

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

টিফেল্ড দ্বারা বিন পদ্ধতিতে প্যাকিং ব্যবহার করা । একটি পিছনের নিউলাইন দিয়ে প্রথমে নীচের সারিটি মুদ্রণ করে।

দেখে মনে হচ্ছে এফপিসির সমস্যা নেই random(0), তাই আমার সেখানে কিছু অস্বাভাবিক সংযোজন রয়েছে।


আমার আসল জমাটি 209 বাইটে নেমে গেছে:

var n,i,a,r:int32;begin read(n);if n>44then a:=a-2;if n>59then a:=a-2;r:=1000;Randomize;for i:=-3to-0do begin if i>a then begin n:=random(r+1);if n>0then write(n);r:=r-n;end;writeln;end;if r>0then write(r)end.

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


2

কাঠকয়লা , 37 বাইট

F²F²⊞υ∧‹³⁺ι÷Iθ¹⁵‽⊕⁻φΣ∨υω⊞υ⁻φΣυEυ⎇ιIιω

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

F²F²

দু'বার, দু'বার লুপ করুন। বিকল্পভাবে আমি একই বাইট গণনার জন্য লুপ সূচকটি 2 দিয়ে ভাগ করে নিতে পারি।

‹³⁺ι÷Iθ¹⁵

যদি বাহ্যিক সূচক প্লাস তাপমাত্রার পনেরতম অংশটি তিনটির চেয়ে বেশি হয় ...

⊞υ∧...‽⊕⁻φΣ∨υω

... তারপরে একটি এলোমেলো পূর্ণসংখ্যা 1000 পর্যন্ত যোগ করুন এবং এ পর্যন্ত যোগফলটি। দুর্ভাগ্যক্রমে চারকোল খালি তালিকার যোগফল গণনা করতে পারে না তাই এর পরিবর্তে আমাকে খালি স্ট্রিংয়ের বিকল্প নিতে হবে।

⊞υ⁻φΣυ

অবশিষ্টের পরিমাণটি তালিকায় চাপ দিন।

Eυ⎇ιIιω

তালিকাটিকে স্ট্রিংয়ে রূপান্তর করুন, তবে শূন্যের পরিবর্তে খালি স্ট্রিংটি ব্যবহার করুন।


2

জেলি , 28 বাইট

>“,;‘SḤ‘µȷŻṗS⁼¥ƇȷX;0ẋ5¤ḣ5Yḟ0

ফলাফল মুদ্রণের একটি সম্পূর্ণ প্রোগ্রাম (উল্টোদিকে, যেমন অনুমতি দেওয়া হয়েছে)।

7ȷn>591015

কিভাবে?

>“,;‘SḤ‘µȷŻṗS⁼¥ƇȷX;0ẋ5¤ḣ5Yḟ0 - Main Link: integer, n
 “,;‘                        - list of code-page indices = [44,59]
>                            - greater than? (vectorises)
     S                       - sum (i.e. 0, 1 or 2)
      Ḥ                      - double (i.e 0, 2 or 4)
       ‘                     - increment (i.e. 1, 3 or 5)
        µ                    - start a new monadic link, call that x (i.e. f(x))
         ȷ                   - literal 1000
          Ż                  - zero-range = [0,1,2,...,1000]
           ṗ                 - Cartesian power (all tuples of length x using those numbers)
               Ƈ             - filter keep if:
              ¥              -   last two links as a dyad:
            S                -     sum
             ⁼  ȷ            -     equals 1000? (i.e. only valid tuples)
                 X           - random choice (get one of these tuples)
                      ¤      - nilad followed by link(s) as a nilad:
                   0         -   zero
                    ẋ5       -   repeat five times = [0,0,0,0,0]
                  ;          - concatenate     (e.g. [354,388,258,0,0,0,0,0])
                       ḣ5    - head to index 5 (e.g. [354,388,258,0,0])
                         Y   - join with newlines
                          ḟ0 - filter out zeros
                             - implicit print

1
" আপনাকে আউটপুটটিও বিপরীত করার অনুমতি দেওয়া হয়েছে (অর্থাত্ 1000\n\n\n\nপরিবর্তে \n\n\n\n1000বা [87, null, 913, null, null]পরিবর্তে [null, null, 913, null, 87])। " সুতরাং হ্যাঁ, আপনাকে 28-বাইট সংস্করণটি ছাড়াই ব্যবহার করার অনুমতি দেওয়া হচ্ছে
কেভিন ক্রুইজসেন

2

টুইগ , 126 বাইট

এটি ছিল আসলে মজাদার একটি চ্যালেঞ্জ!

এই কোডটি এমন ম্যাক্রো তৈরি করে যা আমদানি করতে হয়।

{%macro a(s,z=1000)%}{%for _ in 4..1%}{%set t=s>59or(s>44and _<3)?random(z):''%}{%set z=z-t%}{{t}}
{%endfor%}{{z}}{%endmacro%}

এটি আমদানি করতে, কেবল এটি করুন:

{%- import 'macro.twig' as a -%}
{{- a.a(50) -}}

এই কৌতুক করতে হবে।

আপনি https://twigfiddle.com/t4dfgy
নোটিশটিতে চেষ্টা করতে পারেন : পৃষ্ঠাটি শ্বেতস্থান সরিয়ে দেওয়ার কারণে -, লাইনের সঠিক সংখ্যাকে আউটপুট দিচ্ছে তা প্রমাণ করতে আমি লাইনের শেষে একটি যুক্ত করতে বাধ্য হয়েছিলাম ।

একটি নিয়মিত ইনস্টলেশন, আপনি কেবল সমস্যা ছাড়াই নিউলাইনগুলি দেখতে পাবেন।


2

পার্ল 6 , 62 বাইট

{($!=1e3)||@,|((+$!-($!-=$!.rand+|0)||@)xx($_/15+|0)*2-4)[^4]}

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

একটি বেনামি কোড ব্লক যা একটি স্ট্রিং নেয় এবং পূর্ণসংখ্যার একটি তালিকা, এর সাথে Nilখালি তালিকা ( []) এর পরিবর্তে দেয় 0

ব্যাখ্যা:

{($!=1e3)||@,|((+$!-($!-=$!.rand+|0)||@)xx($_/15+|0)*2-4)[^4]}
{                                                            }  # Anonymous code block
 ($!=1e3)  # Initialise $! to 1000
                +$!-($!-=$!.rand+|0)     # Pick a random value from 0 to $!
                                    ||@  # Or an empty array if it is zero
            ,  (                       )xx  # Repeat this
                                          ($_/15+|0)*2-4  # The given value mapped to 0,2,4
             |(                                         )[^4] # Get the first four values
 ($!    )||@  # Where the first value is the leftover number in $! or an empty array


2

জে , 56 55 54 48 43 40 বাইট

5{.1e3(2<@-/\[,0,~[:\:~?@$~)2*1#.>&44 59

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

-3 বাইট ধন্যবাদ ফ্রাউনফ্রোগের জন্য


আরেকটি ধারণাগতভাবে দুর্দান্ত পদ্ধতি যা কিছুটা দীর্ঘ কিন্তু এখানে পদ্ধতি অনুসারে সমস্ত সম্ভাবনার উপর পুরোপুরি অভিন্ন বিতরণের গ্যারান্টি দেয় :

জে , 53 বাইট

5$!.a:[:<@(+/);._1 0:,(1e3#1)({~#?#)@,0$~2*1#.>&44 59

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


$!.a:শুধু তাই না {.?
ফ্রাউনফ্রোগ

ধন্যবাদ আমি ভুলে গিয়েছিলাম যে "শূন্য" পূরণের ফলাফলের চেয়ে আরও বেশি উপাদান গ্রহণ করা।
যোনাহ

2

পাওয়ারশেল , 115 105 98 বাইট

-17 বাইট মজির ধন্যবাদ

$a=,0*5
45,60-ge"$args"|%{$i+=2}
$i..4|%{$t+=$a[$_]=random(1001-$t)}
$a[4]+=1e3-$t
$a|%{"$_"*!!$_}

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

একটি গলফ এডুইন এর সুদৃশ্য উত্তর । আপনি যদি এটি পছন্দ করেন তবে তাকে উপভোগ করুন।


1
সুন্দর। আরও কিছুটা গল্ফ এটি অনলাইনে চেষ্টা করুন!
mazzy

1
গল্ফ আবার 98 বাইট
মেজি

1

রুবি , 62 55 বাইট

->n{w=1000;[4,4,3,3].map{|r|r*15>n||w-=q=rand(w);q}<<w}

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

টেস্টগুলি 0-99 ডিগ্রি সীমাবদ্ধ, কারণ লাভা প্রদীপগুলি উচ্চতর তাপমাত্রায় বিপজ্জনক হতে পারে :


হাই! আমি ভয় করি যে আপনার উত্তরটি অবৈধ। এটি বর্তমানে আছে0 খালি লাইন জন্য আছে। অ্যারের মধ্যে খালি লাইন জন্য ছাড়া কিছু হতে পারে 0, falseবা একটি ঋণাত্মক সংখ্যা। সুতরাং এটি হতে পারে null, "", [], ইত্যাদি, কিন্তু না 0। রুবির অবজেক্ট-অ্যারে / তালিকাগুলি রয়েছে কিনা তা নিশ্চিত নন যাতে আপনি 0গুলিটিকে অন্য কোনও কিছুর কাছে রূপান্তর করতে পারেন তবে তা না হলে আপনাকে কোনও অ্যারে / তালিকা ফিরিয়ে দেওয়ার পরিবর্তে সেগুলি মুদ্রণ করতে হবে।
কেভিন ক্রুইজসেন

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