Bir fasulye makinesine veya plinko / pachinko oyununa benzer bir mekanizmanın bu ASCII sürümünü düşünün :
O
^
\ ^
^ ^ \
\ ^ / ^
U U U U U
1 2 3 4 5
O
Aşağı düşen bir top.
- Bir vuruş yaptığında
^
, sola ya da sağa gitme şansı 50-50 olur. - Bire vurduğunda
/
her zaman sola döner. - Bir vuruş yaptığında
\
, her zaman doğru gider.
Top nihayetinde alttaki numaralı U
oluklardan birine düşer . Asıl soru, her kanalda ortaya çıkma olasılığı nedir?
Bu özel durumda, olasılıklar vardır 0.0
, 0.1875
, 0.5625
, 0.125
, ve 0.125
, sırası ile 5 arasındaki olukları 1.
İşte 3 olukları yerine 5. olasılıkları vardır ile başka bir örnek 0.5
, 0.5
ve 0.0
:
O
/
^ ^
U U U
1 2 3
Bu mücadelede, bu problemi, herhangi bir şekilde kurulmuş herhangi bir sayıda katmana sahip bir mekanizmaya yaygınlaştıracağız.
Meydan okuma
Mekanizmanın piramit yapısının ASCII temsilini alan bir program veya işlev yazın. (Stdin / komut satırı / işlev arg. İle giriş)
Ya uygun bir şekilde yerleştiren boşluklarla geldiğini varsayabilirsin, örneğin
^
\ ^
^ ^ \
\ ^ / ^
Veya hiç boşluk bırakmadığını, örneğin
^
\^
^^\
\^/^
(İsterseniz, takip eden bir yeni satır ve / veya bazı takip eden boşluk alanlarının olduğunu varsayabilirsiniz.)
Giriş piramidi yapısı sıfır dahil herhangi bir sayıda seviyeye (aka çizgileri) sahip olabilir. Her seviyede bir daha vardır ^
, /
ya da \
son daha ve orada levels + 1
(giriş parçası değildir) altındaki olukları.
Programlamanız / işlevin, topun her bir çukura girme olasılıklarının listesini yazdırması / iade etmesi gerekir (en soldan en sağa veya en soldaki sırayla). Bunlar, basıldığında en az 3 ondalık basamağa sahip kayan nokta değerleri olmalıdır (gereksiz sıfırlar ya da ondalık basamağa ihtiyaç duyulmaz; 1
bunun için para cezası iyidir 1.000
, .5
bunun için iyidir 0.500
, vb.). Bir işlev yazdıysanız, değerleri yazdırabilir veya yüzenlerin bir listesini / dizisini döndürebilirsiniz.
Herhangi bir makul basılı liste formatı iyidir. örneğin 0.5 0.5 0.0
, [0.5 0.5 0.0]
, [0.5, 0.5, 0.0]
, {0.5, 0.5, 0.0}
, veya 0.5\n0.5\n0.0
tüm düzeleceğine.
Örnekler
0 Seviyeler: (önemsiz bir seviyeye kadar kaynar U
)
Giriş: [no input/empty string given]
Çıkış:1.0
1 Seviye:
Giriş: ^
Çıkış:0.5 0.5
Giriş: /
Çıkış:1.0 0.0
Giriş: \
Çıkış:0.0 1.0
2 Seviye: (yukarıdaki ikinci örnek)
Giriş:
/
^ ^
Çıktı: 0.5 0.5 0.0
3 Seviye:
Giriş:
^
^ ^
^ ^ ^
Çıktı: 0.125 0.375 0.375 0.125
Giriş:
\
/ \
/ / \
Çıktı: 0.0 0.0 0.0 1.0
4 Seviye: (yukarıdaki ilk örnek)
Giriş:
^
\ ^
^ ^ \
\ ^ / ^
Çıktı: 0.0 0.1875 0.5625 0.125 0.125
7 Seviye:
Giriş:
^
/ ^
^ ^ /
/ \ / \
^ ^ / ^ \
^ \ ^ \ / ^
\ ^ ^ ^ \ ^ /
Çıktı: 0.0 0.09375 0.28125 0.4375 0.1875 0.0 0.0 0.0
puanlama
Bayt cinsinden en kısa cevap kazanır. Tiebreaker daha önce yayınlandı.