Je veux jouer à Dungeons and Dragons, mais je n'ai pas de dés! Votre défi est de lancer des dés D&D.
La spécification du format d'entrée sous forme Backus-Naur est:
<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>
L'entier facultatif avant le dest le nombre de dés à lancer; il doit être au moins 1, et par défaut 1s'il n'est pas fourni.
L'entier requis immédiatement après le dest le nombre de côtés de chaque dé; ça doit être au moins 1. Les côtés de chaque dé sont des entiers positifs consécutifs distincts commençant à 1.
Le modificateur facultatif peut être +0, et il est par défaut +0s'il n'est pas spécifié.
Par exemple, pour l'entrée 2d10+5, vous générez deux nombres aléatoires de 1 à 10 inclus, les ajoutez ensemble et en ajoutez 5. Ensuite, vous produirez le résultat.
Si vous recevez une entrée invalide, comme 2d, d20+, 0d4, 2d5+1+2, 2+2, ou toute autre chose qui ne correspond pas à ce format, vous devez sortie « Invalid input». Sinon, vous ne devez générer qu'un seul entier aléatoire, pondéré en fonction de l'entrée. Par exemple, 3d6devrait produire plus de 10s que 4s .
Cas de test
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
Il s'agit de code-golf , donc le code le plus court en octets gagnera!
net pcomme facultatif, mais les entrées qui choisissent de ne pas les inclure ( d20+) comme invalides.
+signe ne devrait être ajouté que si le modificateur pest fourni.
1d4+1d6pour un voleur sournois attaquant avec un poignard) ou ayant un négatif p(par exemple, 1d20-1pour un test de compétence sans rang / formation et un modificateur de capacité négatif).
2d8 + 1d6 + 4? Tu vas passer un mauvais moment
02d05+073une entrée valide?