Я хочу играть в Dungeons and Dragons, но у меня нет игральных костей! Ваша задача - бросить кубики D & D.
Спецификация формата ввода в форме Бэкуса-Наура :
<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
действительным вход?