একটি দিনের টাইমলাইনে অনিশ্চয়তা


12

মনে করুন আপনার অ্যালার্ম আপনাকে এক সকালে জাগিয়ে তুলবে, তবে আপনি স্নুজে মারলেন যাতে আপনি আরও 8 মিনিটের জন্য ঘুমাতে পারেন। যখন এটি আবার বেজে যায় আপনি কুরুচিপূর্ণভাবে উঠে একটি ঝরনা খান, যা আপনি অনুমান করেন যে 15 থেকে 17 মিনিট সময় নেয়। তারপরে আপনি ঠিক 2 মিনিটের জন্য দাঁত ব্রাশ করুন এবং পোশাক পরে যাতে প্রায় 3 থেকে 5 মিনিট সময় লাগে। অবশেষে, আপনি 6 থেকে 8 মিনিটের মধ্যে তাড়াতাড়ি প্রাতঃরাশ খাবেন এবং দরজাটি চালিয়ে যান।

আমরা এই সময়ক্রম ক্রম হিসাবে চিহ্নিত করতে পারি 8 15-17 2 3-5 6-8

আপনার সকালের রুটিনের অনিশ্চয়তা দেখে, আপনি প্রথম ঘুম থেকে ওঠার পর থেকে নির্দিষ্ট কিছু সংখ্যক সময়ে আপনি প্রতিটি কাজটি করার সম্ভাবনা কতটা?

প্রতিটি কাজ পুরো মিনিট সময় নেয় বলে ধরে নিচ্ছি, আমরা অনিশ্চিত সময়ের স্প্যানগুলির প্রতিটি সম্ভাব্য সংমিশ্রণটি (যেমন 3, 4 এবং দাঁত ব্রাশ করার জন্য 5 মিনিট) চার্ট করতে পারি। এই চার্টটি সমস্ত 27 টি সম্ভাবনা দেখায়, সময়টি ডানদিকে বাড়ার সাথে সাথে, এবং N মিনিটের প্রতিটি টাস্ক (এন - 1) ড্যাশগুলি এবং একটি উল্লম্ব বার দ্বারা প্রতিনিধিত্ব করে, কেবল এটির সমাপ্তি চিহ্নিত করতে। মিনিটের সীমানা অক্ষরগুলির মধ্যে ঘটে , সুতরাং 8এবং 9কলামের মধ্যে স্থানটি 8 min 59 secরূপান্তরিত হয় 9 min

         1111111111222222222233333333334
1234567890123456789012345678901234567890  <-- Minute
-------|--------------|-|--|-----|
-------|--------------|-|--|------|
-------|--------------|-|--|-------|
-------|--------------|-|---|-----|
-------|--------------|-|---|------|
-------|--------------|-|---|-------|
-------|--------------|-|----|-----|
-------|--------------|-|----|------|
-------|--------------|-|----|-------|
-------|---------------|-|--|-----|
-------|---------------|-|--|------|
-------|---------------|-|--|-------|
-------|---------------|-|---|-----|
-------|---------------|-|---|------|
-------|---------------|-|---|-------|
-------|---------------|-|----|-----|
-------|---------------|-|----|------|
-------|---------------|-|----|-------|
-------|----------------|-|--|-----|
-------|----------------|-|--|------|
-------|----------------|-|--|-------|
-------|----------------|-|---|-----|
-------|----------------|-|---|------|
-------|----------------|-|---|-------|
-------|----------------|-|----|-----|
-------|----------------|-|----|------|
-------|----------------|-|----|-------|
1234567891111111111222222222233333333334  <-- Minute
         0123456789012345678901234567890

এটা পরিষ্কার যে রুটিনটি কমপক্ষে 40 মিনিট এবং কমপক্ষে 34 মিনিট সময় নিতে পারে।

প্রশ্নটি হল একটি নির্দিষ্ট মুহুর্তে, 29 মিনিট বলুন, আপনি 5 টির প্রতিটি কাজ করার সুযোগ কী? ধরে নিন প্রতিটি অনিশ্চিত সময় ফ্রেম সঠিক পুরো মিনিটগুলিতে অভিন্নভাবে বিতরণ করা হয়েছে। সুতরাং একটি 4-7 টাস্কে 4, 5, 6 বা 7 মিনিট সময় নেওয়ার 25% সম্ভাবনা রয়েছে।

চার্ট থেকে দেখা যায় যে 29 মিনিটে একটি ছিল ...

0/27 chance you were snoozing (task 1)
0/27 chance you were showering (task 2)
0/27 chance you were brushing (task 3)
24/27 chance you were dressing (task 4)
3/27 chance you were eating (task 5)

একইভাবে 1 মিনিটের সময় এমন 27/27সুযোগ ছিল যা আপনি 0/27অন্য কোথাও স্নুজ করছিলেন ।

উদাহরণস্বরূপ 38 মিনিটে, সম্ভাব্য রুটিনগুলির মধ্যে 17 ইতিমধ্যে শেষ হয়ে গেছে। সুতরাং 10 টির মধ্যে 10 ক্ষেত্রে আপনি খাবেন। এর অর্থ সম্ভাবনাগুলি দেখতে ভাল লাগে

0/10 task 1, 0/10 task 2, 0/10 task 3, 0/10 task 4, 10/10 task 5

চ্যালেঞ্জ

মিনিটের মানটির জন্য পূর্ণসংখ্যার জন্য একটি ক্রিয়া লিখুন এবং একক পূর্ণসংখ্যার ক্রম বা > এর a-bসাথে পূর্ণসংখ্যার জোড় সমন্বিত একটি স্ট্রিং লিখুন , সমস্ত স্পেস দ্বারা পৃথক করা (ঠিক যেমন )। সমস্ত পূর্ণসংখ্যা ইতিবাচক হয়। ইনপুট মিনিট সম্ভাব্য সর্বোচ্চ সময়ের চেয়ে কম বা সমান হবে (উদাহরণস্বরূপ 40)ba8 15-17 2 3-5 6-8

ফাংশনটির অন্য একটি স্ট্রিং প্রত্যাবর্তন করা উচিত যা প্রতিটি মুহুর্তে নির্ধারিত মুহুর্তে প্রতিটি কার্যক্রমে থাকার অবিশ্বাস্য ভগ্নাংশের সম্ভাবনা চিহ্নিত করে ।

উদাহরণ

  • myfunc(29, "8 15-17 2 3-5 6-8") স্ট্রিং প্রদান করে 0/27 0/27 0/27 24/27 3/27
  • myfunc(1, "8 15-17 2 3-5 6-8") স্ট্রিং প্রদান করে 27/27 0/27 0/27 0/27 0/27
  • myfunc(38, "8 15-17 2 3-5 6-8") স্ট্রিং প্রদান করে 0/10 0/10 0/10 0/10 10/10
  • myfunc(40, "8 15-17 2 3-5 6-8") স্ট্রিং প্রদান করে 0/1 0/1 0/1 0/1 1/1

যদি আপনার ভাষাতে স্ট্রিং বা ফাংশন না থাকে আপনি নামযুক্ত ভেরিয়েবল, স্টিডিন / স্টডআউট, কমান্ড লাইন বা যেটিকে সবচেয়ে উপযুক্ত বলে মনে করতে পারেন।

স্কোরিং

এটি কোড গল্ফ। বাইটস মধ্যে সংক্ষিপ্ত সমাধান ।


প্রতিটি কার্যক্রমে ব্যয় করা সময়ের জন্য প্রশ্নটি কোনও নির্দিষ্ট সম্ভাবনার বন্টন নির্দিষ্ট করে না। এটি সাধারণত বিতরণ করা উচিত? আমি কি চাই কোনও বিতরণ ধরে নিতে পারি?
ফেয়ার্সাম

1
@ ক্যালভিন এটি কোনও সাধারণ বিতরণ নয়। আপনি একটি অভিন্ন বিতরণ করতে চান?
ফেয়ারসুম

প্রতিটি কাজ বাম |, ডান |, বা প্রতিটি অর্ধেক অন্তর্ভুক্ত ?
পিটার টেলর

সমস্ত উল্লিখিত ইস্যু প্রশ্নবিদ্ধ। অন্য কোন সমস্যা?
ক্যালভিনের শখ

1
যদি কোনও কাজ হওয়ার কথা না থাকে তবে কী হবে?
গর্বিত হাসেলেলার

উত্তর:


3

সিজেম, 124 115 100 92 89 বাইট

এটি অনেক গল্ফ করা যেতে পারে, তবে আমাকে ঘুমাতে হবে, তাই এখনই পোস্ট করা :)

l~\:N;S/{'-/2*2<~i),\i>}%_{m*{(\+}%}*{[0\{1$+}*]}%:B;,,{0B{I>2<~N<!\N<*+}/}fI]_:+m*'/f*S*

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

ইনপুটটি হ'ল:

29 "8 15-17 2 3-5 6-8"

যেখানে প্রথম পূর্ণসংখ্যা ইনপুট মিনিট (যেমন প্রশ্নে উদাহরণ দেখানো, শুধু ছাড়া হয় এবং দ্বিতীয় স্ট্রিং সময় সীমা ক্রম ,)

উল্লিখিত ইনপুটটির জন্য আউটপুট:

0/27 0/27 0/27 24/27 3/27

আপনি যদি আপডেট বিধিগুলি অনুসরণ করতে পারেন তবে আমি এটি গ্রহণ করব।
ক্যালভিনের

অন্যান্য সমস্ত উদাহরণ দেয় 0/27
ক্যালভিনের

এখন এটি `0/0 এর একগুচ্ছ।
ক্যালভিনের শখ

@ ক্যালভিনের শখগুলি এটিকে চ্যাট করতে নেওয়া যাক: chat.stackexchange.com/rooms/18161/…
অপ্টিমাইজার

কিছু মনে করবেন না, দুঃখিত, আমি কেবল ইনপুটটি ভুল দিচ্ছিলাম।
ক্যালভিনের

3

গণিত, 237 216 বাইট

আমি নিশ্চিত যে আমি এটিকে কিছুটা ছোট করতে পারি তবে এখনই নয়। অন্তত আমি ম্যাথমেটিকা ​​10 থেকে নতুন সমিতিগুলি ব্যবহার করতে পারি! :)

f=(j=#;s=StringSplit;r=ToString;t=Lookup[Counts@Flatten[FirstPosition[#,n_/;n>=j]&/@Accumulate/@Tuples@i],#,0]&/@Range@Length[i=ToExpression[#~s~"-"&/@s@#2]/.{a_,b_}:>a~Range~b];Riffle[r@#<>"/"<>r@Tr@t&/@t," "]<>"")&

Ungolfed:

    f = (
   j = #;
   s = StringSplit;
   r = ToString;
   t = Lookup[
       Counts@Flatten[
         FirstPosition[#, n_ /; n >= j] & /@ 
          Accumulate /@ Tuples@i], #, 0] & /@ 
     Range@Length[
       i = ToExpression[#~s~"-" & /@ s@#2] /. {a_, b_} :> a~Range~b];
   Riffle[r@# <> "/" <> r@Tr@t & /@ t, " "] <> "") &

চ্যালেঞ্জ হিসাবে নির্দিষ্ট হিসাবে ব্যবহার:

f[29, "8 15-17 2 3-5 6-8"]

0/1প্রথম ইনপুট সর্বাধিক সময়ের চেয়ে বড় হলে এটি সমস্ত উপাদানের জন্য ফিরে আসে ।


আমি মনে করি Cases[]কীভাবে Tuplesকাজ হয় তা দেওয়া দরকার নেই । যদি তাই হয়, তবে t = Lookup[Counts[Join @@(FirstPosition[#, n_ /; n >= j] & /@ Accumulate /@ Tuples@i)], #, 0]
ডেভিডসি

Lookupএবং Countsভাষাতে স্বাগত সংযোজন।
ডেভিডসি

@ ডেভিডকারারহর ধন্যবাদ, তবে আমাকে Flatten(পরিবর্তে Join@@) স্যুইচ করতে হয়েছিল কারণ FirstPositionএখন ফিরে আসতে পারেন Missing[NotFound]যা যোগদান করা যায় না।
মার্টিন এন্ডার

1

হাস্কেল, ২৩২

f=(\(a,b)->[a..fst$head$reads(tail$b++" ")++[(a,b)]]).head.reads
n%l=(tail>>=zipWith(-))(0:map(\i->drop i&l*e[x|x<-map sum$mapM f$take i$w l,x>=n])[1..e$w l])>>=(++'/':show(id&l)++" ").show
(&)i=product.map(e.f).i.w
w=words
e=length

এভাবে চালাও:

*Main> putStrLn $ 1 % "8 15-17 2 3-5 6-8"
27/27 0/27 0/27 0/27 0/27 

1

এপিএল, 162

{{⍵,'/',y}¨⌊|-2-/0,(y←+/,⍺≤⊃⌽x)×1,⍨¯1↓⍺{+/÷∘⍴⍨⍺≤,⍵}¨x←∘.+\{⊃{⍺,⍺↓⍳⍵}/⍎('-'⎕R' ')⍵}¨('\S+'⎕S'\0')⍵}

উদাহরণ রান

      f←{{⍵,'/',y}¨⌊|-2-/0,(y←+/,⍺≤⊃⌽x)×1,⍨¯1↓⍺{+/÷∘⍴⍨⍺≤,⍵}¨x←∘.+\{⊃{⍺,⍺↓⍳⍵}/⍎('-'⎕R' ')⍵}¨('\S+'⎕S'\0')⍵}
      29 f '8 15-17 2 3-5 6-8'
 0 / 27  0 / 27  0 / 27  24 / 27  3 / 27 

      1 f '8 15-17 2 3-5 6-8'
 27 / 27  0 / 27  0 / 27  0 / 27  0 / 27 

      38 f '8 15-17 2 3-5 6-8'
 0 / 10  0 / 10  0 / 10  0 / 10  10 / 10 

      40 f '8 15-17 2 3-5 6-8'
 0 / 1  0 / 1  0 / 1  0 / 1  1 / 1

আমি আশা করি আপনি অদ্ভুত ব্যবধানে কিছু মনে করবেন না


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