ダンジョンとドラゴンをプレイしたいのですが、サイコロがありません!あなたの挑戦は、いくつかの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の2つの乱数を生成し、それらを加算して5を加算します。次に、結果を出力します。
次のような無効な入力を、受信した場合は2d
、d20+
、0d4
、2d5+1+2
、2+2
それはこの形式に適合しない、または何か他には、「出力しなければなりませんInvalid input
」。それ以外の場合は、入力に従って重み付けされた単一のランダム整数のみを出力する必要があります。例えば、3d6
より多く生産する必要がある10
よりもS 4
秒。
テストケース
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
これはcode-golfなので、バイト単位の最短コードが勝ちます!
n
しp
ますが、それらd20+
を無効として含めないことを選択する入力()。
+
修飾子p
が提供されている場合にのみ記号を追加すべきだと思います。
1d4+1d6
短剣でローグがこっそり攻撃する場合)またはネガティブになる場合p
(例:1d20-1
ランク/トレーニングなしのスキルチェックおよびネガティブアビリティモディファイア)が含まれる場合があります。
2d8 + 1d6 + 4
ますか?あなたは悪い時間を持っているつもりだ
02d05+073
有効な入力?