ฉันต้องการเล่น Dungeons and Dragons แต่ฉันไม่มีลูกเต๋า! ความท้าทายของคุณคือหมุนลูกเต๋า D&D
ข้อมูลจำเพาะรูปแบบอินพุตในรูปแบบBackus-Naurคือ:
<valid-input> ::= <opt-integer> "d" <integer> <opt-modifier>
<opt-integer> ::= | <integer>
<opt-modifier> ::= | "+" <integer>
<integer> ::= "0" | "1" | "2" | "3" | "4" | "5" |
"6" | "7" | "8" | "9" | <integer> <integer>
จำนวนเต็มเพิ่มเติมก่อนที่d
จะเป็นจำนวนของลูกเต๋าที่จะม้วน; อย่างน้อยจะต้องเป็น1
ค่าเริ่มต้น1
หากไม่ได้ระบุไว้
จำนวนเต็มที่ต้องการทันทีหลังจากd
คือจำนวนของแต่ละด้านที่มี 1
มันจะต้องเป็นอย่างน้อย 1
ด้านข้างของแต่ละคนตายมีความแตกต่างจำนวนเต็มบวกติดต่อกันเริ่มต้นที่
ตัวเลือกเสริมอาจเป็น+0
และจะมีค่าเริ่มต้น+0
หากไม่ได้ระบุไว้
ตัวอย่างเช่นสำหรับอินพุต2d10+5
คุณสร้างตัวเลขสุ่มสองหมายเลขจาก 1 ถึง 10 รวมเพิ่มเข้าด้วยกันและเพิ่ม 5 จากนั้นคุณจะแสดงผลลัพธ์
ถ้าคุณได้รับการป้อนข้อมูลที่ไม่ถูกต้องเช่น2d
, d20+
, 0d4
, 2d5+1+2
, 2+2
หรือสิ่งอื่นที่ไม่พอดีกับรูปแบบนี้คุณต้องเอาท์พุท " Invalid input
" มิฉะนั้นคุณจะต้องแสดงผลเป็นจำนวนเต็มแบบสุ่มเดียวเท่านั้นซึ่งมีน้ำหนักตามอินพุต ยกตัวอย่างเช่น3d6
ควรผลิตมากขึ้น10
s กว่า4
s
กรณีทดสอบ
Input Minimum possible output Maximum possible output
d1 1 1
d6 1 6
d1+3 4 4
d20+3 4 23
2d1 2 2
2d6+2 4 14
d01 1 1
d01+0 1 1
01d01+01 2 2
3d20+10 13 70
d Invalid input
d0 Invalid input
d+0 Invalid input
d0+0 Invalid input
0d1 Invalid input
0d1+1 Invalid input
d1+ Invalid input
1d Invalid input
1d1+ Invalid input
1d+1 Invalid input
2d+2d Invalid input
d2+d2 Invalid input
d2+2+2 Invalid input
d2-1 Invalid input
-d2 Invalid input
-2d2 Invalid input
4*3 Invalid input
4*d2 Invalid input
นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดเป็นไบต์จะเป็นผู้ชนะ!
n
และp
เป็นตัวเลือก แต่การป้อนข้อมูลที่เลือกที่จะไม่รวมพวกเขา ( d20+
) ว่าไม่ถูกต้อง
+
ควรจะเพิ่มสัญญาณเมื่อมีการแก้ไขp
เท่านั้น
1d4+1d6
สำหรับ Rogue แอบโจมตีกริช) หรือมีการลบp
(เช่น1d20-1
สำหรับการตรวจสอบทักษะโดยไม่มีอันดับ / การฝึกอบรมและการปรับปรุงความสามารถเชิงลบ)
2d8 + 1d6 + 4
หรือ? คุณจะมีช่วงเวลาที่เลวร้าย
02d05+073
การป้อนข้อมูลที่ถูกต้อง?