एक दिन की समयरेखा में अनिश्चितता


12

मान लीजिए कि आपका अलार्म आपको एक सुबह उठता है, लेकिन आप स्नूज़ मारते हैं ताकि आप 8 मिनट तक सो सकें। जब यह फिर से बजता है तो आप गंभीर रूप से उठते हैं और एक शॉवर लेते हैं, जो आपको लगता है कि 15 से 17 मिनट लगते हैं। फिर आप अपने दांतों को ठीक 2 मिनट के लिए ब्रश करते हैं, और तैयार हो जाते हैं, जिसमें लगभग 3 से 5 मिनट लगते हैं। अंत में, आप 6 से 8 मिनट में जल्दी-जल्दी नाश्ता करते हैं और दरवाजे से बाहर निकलते हैं।

हम इस समय अनुक्रम को इस रूप में निरूपित कर सकते हैं 8 15-17 2 3-5 6-8

अपनी सुबह की दिनचर्या की अनिश्चितता को देखते हुए, क्या संभावना है कि आप प्रत्येक कार्य को कुछ विशेष मिनटों में कर रहे थे जब आप पहली बार उठे थे?

हर कार्य को पूरा करने में कुछ मिनट लगते हैं, हम अनिश्चित समय अवधि (जैसे कि 3, 4, और दांतों को साफ करने के लिए 5 मिनट) के हर संभव संयोजन को चार्ट कर सकते हैं। यह चार्ट सभी 27 संभावनाओं को दिखाता है, समय के साथ दाईं ओर बढ़ रहा है, और एन के प्रत्येक कार्य को (एन - 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के साथ b> a, सभी रिक्त स्थान (जैसे द्वारा अलग 8 15-17 2 3-5 6-8)। सभी पूर्णांक सकारात्मक हैं। इनपुट मिनट अधिकतम संभव समय (उदाहरण में 40) से कम या बराबर होगा।

फ़ंक्शन को दिए गए मिनट में प्रत्येक कार्य में होने के अनियंत्रित आंशिक अवसर को दर्शाते हुए एक और स्ट्रिंग वापस करना चाहिए ।

उदाहरण

  • 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

यदि आपकी भाषा में तार या फ़ंक्शन नहीं हैं, तो आप नामित चर, स्टडिन / स्टडआउट, कमांड लाइन, या जो कुछ भी उचित लगता है, का उपयोग कर सकते हैं।

स्कोरिंग

यह कोड गोल्फ है। बाइट्स में सबसे छोटा समाधान जीतता है।


प्रश्न प्रत्येक कार्य पर खर्च किए गए समय के लिए एक विशेष संभावना वितरण को निर्दिष्ट नहीं करता है। क्या इसे सामान्य रूप से वितरित किया जाना चाहिए? क्या मुझे कोई वितरण चाहिए जो मुझे चाहिए?
feersum

1
@ कैल्विन एक सामान्य वितरण नहीं है। शायद आप एक समान वितरण करना चाहते थे?
feersum

क्या प्रत्येक कार्य में बाएं |, दाएं |या प्रत्येक का आधा भाग शामिल है?
पीटर टेलर

सभी उल्लिखित मुद्दों पर चर्चा की। कोई और समस्या?
केल्विन के शौक

1
क्या होता है अगर कोई मौका है कि कोई कार्य नहीं हो रहा था?
गर्वित हेकेलर

जवाबों:


3

CJam, 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/…
ऑप्टिमाइज़र

कोई बात नहीं, माफ करना, मैं सिर्फ इनपुट गलत दे रहा था।
केल्विन के शौक 20

3

गणितज्ञ, २३atic २१६ बाइट्स

मुझे यकीन है कि मैं इसे थोड़ा छोटा कर सकता हूं, लेकिन अभी नहीं। कम से कम मुझे अंतत: मैथेमेटिका 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भाषा में स्वागत योग्य जोड़ हैं।
डेविड सीपी

@DavidCarraher धन्यवाद, लेकिन मुझे Flatten(इसके बजाय Join@@) स्विच करना पड़ा क्योंकि FirstPositionअब वापस आ सकते हैं Missing[NotFound]जो इसमें शामिल नहीं हो सकते।
मार्टिन एंडर

1

हास्केल, 232

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 बाइट्स है। APL का अपना कोडपेज ऐसा है कि उनके सभी चिन्ह ASCII रेंज में फिट होते हैं।
ऑप्टिमाइज़र
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.