พิจารณากลไก ASCII รุ่นนี้ที่คล้ายกับเครื่องทำถั่วหรือเกมplinko / pachinko :
O
^
\ ^
^ ^ \
\ ^ / ^
U U U U U
1 2 3 4 5
O
เป็นลูกที่ตกลง
- เมื่อมันกระทบ a
^
มีโอกาส 50-50 ที่มันจะไปทางซ้ายหรือขวา - เมื่อมันกระทบ a
/
มันจะไปทางซ้ายเสมอ - เมื่อมันกระทบ a
\
มันจะไปทางขวาเสมอ
ในที่สุดลูกบอลตกลงไปในหนึ่งในU
รางหมายเลขที่ด้านล่าง คำถามคือความน่าจะเป็นที่จะเกิดขึ้นในแต่ละรางคือเท่าไหร่?
สำหรับกรณีนี้โดยเฉพาะอย่างยิ่งความน่าจะเป็น0.0
, 0.1875
, 0.5625
, 0.125
และ0.125
สำหรับร่องที่ 1 ถึง 5 ตามลำดับ
นี่เป็นอีกตัวอย่างหนึ่งที่มี 3 รางแทน 5. ความน่าจะเป็น0.5
, 0.5
และ0.0
:
O
/
^ ^
U U U
1 2 3
ในความท้าทายนี้เราจะพูดถึงปัญหานี้กับกลไกที่มีเลเยอร์จำนวนมากไม่ว่าจะเป็นแบบใด
ท้าทาย
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในการแทน ASCII ของโครงสร้างพีระมิดของกลไก (อินพุตผ่าน stdin / บรรทัดคำสั่ง / ฟังก์ชัน ARG)
คุณอาจคิดว่ามันมาพร้อมกับช่องว่างที่วางไว้ในรูปร่างที่เหมาะสมเช่น
^
\ ^
^ ^ \
\ ^ / ^
หรือคุณอาจคิดว่ามันไม่มีที่ว่างเลยเช่น
^
\^
^^\
\^/^
(หากต้องการคุณอาจสมมติว่ามีบรรทัดใหม่ต่อท้ายและ / หรือรูปแบบที่สอดคล้องกันของช่องว่างต่อท้าย)
โครงสร้างปิรามิดอินพุตอาจมีจำนวนระดับ (เส้น aka) รวมถึงศูนย์ แต่ละระดับจะมีอีกหนึ่ง^
, /
หรือ\
กว่าที่ผ่านมาและมีlevels + 1
ร่องที่ด้านล่าง (ซึ่งไม่ได้เป็นส่วนหนึ่งของการป้อนข้อมูล)
โปรแกรม / ฟังก์ชั่นของคุณจะต้องพิมพ์ / ส่งคืนรายการความน่าจะเป็นที่ลูกบอลตกลงไปในแต่ละราง (ตามลำดับรางซ้ายสุดถึงรางขวาสุด) เหล่านี้ควรค่าจุดที่เมื่อพิมพ์ได้อย่างน้อย 3 ตำแหน่งทศนิยมลอย (ศูนย์ฟุ่มเฟือยหรือจุดทศนิยมไม่จำเป็น; 1
จะดีสำหรับ1.000
, .5
จะดีสำหรับ0.500
ฯลฯ ) หากคุณเขียนฟังก์ชันคุณอาจพิมพ์ค่าหรือส่งกลับรายการ / อาร์เรย์ของการลอย
รูปแบบรายการที่พิมพ์ที่สมเหตุสมผลนั้นใช้ได้ เช่น0.5 0.5 0.0
, [0.5 0.5 0.0]
, [0.5, 0.5, 0.0]
, {0.5, 0.5, 0.0}
หรือ0.5\n0.5\n0.0
ทุกคนจะต้องไม่เป็นไร
ตัวอย่าง
0 ระดับ: (เดือดลงไปเล็กน้อยหนึ่งU
)
อินพุต: [no input/empty string given]
เอาต์พุต:1.0
1 ระดับ:
อินพุต: ^
เอาต์พุต:0.5 0.5
อินพุต: /
เอาต์พุต:1.0 0.0
อินพุต: \
เอาต์พุต:0.0 1.0
2 ระดับ: (ตัวอย่างที่สองด้านบน)
การป้อนข้อมูล:
/
^ ^
เอาท์พุท: 0.5 0.5 0.0
3 ระดับ:
การป้อนข้อมูล:
^
^ ^
^ ^ ^
เอาท์พุท: 0.125 0.375 0.375 0.125
การป้อนข้อมูล:
\
/ \
/ / \
เอาท์พุท: 0.0 0.0 0.0 1.0
4 ระดับ: (ตัวอย่างแรกด้านบน)
การป้อนข้อมูล:
^
\ ^
^ ^ \
\ ^ / ^
เอาท์พุท: 0.0 0.1875 0.5625 0.125 0.125
7 ระดับ:
การป้อนข้อมูล:
^
/ ^
^ ^ /
/ \ / \
^ ^ / ^ \
^ \ ^ \ / ^
\ ^ ^ ^ \ ^ /
เอาท์พุท: 0.0 0.09375 0.28125 0.4375 0.1875 0.0 0.0 0.0
เกณฑ์การให้คะแนน
คำตอบที่สั้นที่สุดเป็นไบต์ชนะ Tiebreaker เป็นโพสต์ก่อนหน้า