Alarmınızın sizi bir sabah uyandığını, ancak 8 dakika daha uyuyabilmeniz için erteleme yaptığınızı varsayalım. Tekrar çaldığında, isteksizce kalkıyorsunuz ve duş alıyorsunuz, ki tahmin ettiğiniz 15 ila 17 dakika sürüyor. Daha sonra dişlerinizi tam olarak 2 dakika fırçalayın ve giyin, yaklaşık 3 ila 5 dakika sürer. Son olarak, 6 ila 8 dakika içinde acele bir kahvaltı yiyip kapıyı bitiriyorsunuz.
Bu zamanlama dizisini olarak gösterebiliriz 8 15-17 2 3-5 6-8
.
Sabah rutininizin belirsizliği göz önüne alındığında, her bir görevi ilk uyandığınız andan itibaren belirli dakikalarda yapma olasılığınız nedir?
Her görevin bir kaç dakika sürdüğünü varsayarsak, belirsiz zaman aralıklarının olası tüm kombinasyonlarını (örneğin, diş fırçalamak için 3, 4 ve 5 dakika) grafiklendirebiliriz. Bu grafik, zamanın sağa doğru artmasıyla 27 olasılığı da gösterir ve N dakikasının her görevi (N - 1) tire ve bir dikey çubukla temsil edilir, sadece sonunu işaretlemek için. Dakika sınırları karakterler arasında oluşur , bu nedenle 8
ve 9
sütunu arasındaki boşluk 8 min 59 sec
dönüşür 9 min
.
1111111111222222222233333333334
1234567890123456789012345678901234567890 <-- Minute
-------|--------------|-|--|-----|
-------|--------------|-|--|------|
-------|--------------|-|--|-------|
-------|--------------|-|---|-----|
-------|--------------|-|---|------|
-------|--------------|-|---|-------|
-------|--------------|-|----|-----|
-------|--------------|-|----|------|
-------|--------------|-|----|-------|
-------|---------------|-|--|-----|
-------|---------------|-|--|------|
-------|---------------|-|--|-------|
-------|---------------|-|---|-----|
-------|---------------|-|---|------|
-------|---------------|-|---|-------|
-------|---------------|-|----|-----|
-------|---------------|-|----|------|
-------|---------------|-|----|-------|
-------|----------------|-|--|-----|
-------|----------------|-|--|------|
-------|----------------|-|--|-------|
-------|----------------|-|---|-----|
-------|----------------|-|---|------|
-------|----------------|-|---|-------|
-------|----------------|-|----|-----|
-------|----------------|-|----|------|
-------|----------------|-|----|-------|
1234567891111111111222222222233333333334 <-- Minute
0123456789012345678901234567890
Rutinin en fazla 40 dakika ve en az 34 dakika alabileceği açıktır.
Soru, belirli bir dakikada, 29. dakikada, 5 görevin her birini yapma şansınız nedir? Her belirsiz zaman çerçevesinin tam dakikalar boyunca eşit olarak dağıtıldığını varsayın. 4-7 arası bir görevin 4, 5, 6 veya 7 dakika alma şansı% 25'dir.
Grafikten 29. dakikada bir ...
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)
Benzer şekilde 1. dakikada başka bir yerde 27/27
erteleme şansınız oldu 0/27
.
Örneğin 38. dakikada, potansiyel rutinlerin 17'si zaten sona ermiştir. Yani her 10 vakanın 10'unda yemek yiyeceksiniz. Bu, olasılıkların
0/10 task 1, 0/10 task 2, 0/10 task 3, 0/10 task 4, 10/10 task 5
Meydan okuma
Bir yaz fonksiyonu dakika değeri için bir tamsayıyı alır ve tek bir tam sayı ya da tam sayı çiftlerinin bir dizisinden oluşan bir dizi a-b
ile b
> a
, her (gibi boşluklarla ayrılmış 8 15-17 2 3-5 6-8
). Tüm tamsayılar pozitiftir. Giriş dakikası mümkün olan maksimum süreden daha az veya ona eşit olacaktır (örnek olarak 40).
İşlev , belirli bir dakikada her görevde azaltılmayan kesirli olma şansını gösteren başka bir dize döndürmelidir .
Örnekler
myfunc(29, "8 15-17 2 3-5 6-8")
dizeyi döndürür0/27 0/27 0/27 24/27 3/27
myfunc(1, "8 15-17 2 3-5 6-8")
dizeyi döndürür27/27 0/27 0/27 0/27 0/27
myfunc(38, "8 15-17 2 3-5 6-8")
dizeyi döndürür0/10 0/10 0/10 0/10 10/10
myfunc(40, "8 15-17 2 3-5 6-8")
dizeyi döndürür0/1 0/1 0/1 0/1 1/1
Dilinizde dizeler veya işlevler yoksa adlandırılmış değişkenler, stdin / stdout, komut satırı veya en uygun olanı kullanabilirsiniz.
puanlama
Bu kod golf. En kısa çözüm bayt kazanır.
|
, sağını |
veya yarısını içerir mi?