Я хочу грати в підземеллях і драконах, але в мене немає кубиків! Ваше завдання - закатати кістки 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
для крадіжки, що атакує зловмисником, атакуючи кинджалом) або маючи негатив p
(наприклад, 1d20-1
для перевірки навичок без рангів / тренувань та модифікатора негативної здатності).
2d8 + 1d6 + 4
? Вам буде погано провести час
02d05+073
дійсний вхід?