Quiero jugar Dungeons and Dragons, ¡pero no tengo ningún dado! Su desafío es tirar algunos dados D&D.
La especificación del formato de entrada en formato Backus-Naur es:
<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>
El número entero opcional antes del d
es el número de dados a tirar; debe ser al menos 1
, y su valor predeterminado es 1
si no se proporciona.
El número entero requerido inmediatamente después de d
es el número de lados que tiene cada dado; debe ser al menos 1
. Los lados de cada dado son enteros positivos consecutivos distintos que comienzan en 1
.
El modificador opcional puede ser +0
, y su valor predeterminado es +0
si no se especifica.
Por ejemplo, para la entrada 2d10+5
, genera dos números aleatorios del 1 al 10 inclusive, los suma y suma 5. Luego, generará el resultado.
Si recibe una entrada no válida, como por ejemplo 2d
, d20+
, 0d4
, 2d5+1+2
, 2+2
, o cualquier otra cosa que no encaja en este formato, debe de salida " Invalid input
". De lo contrario, debe generar solo un número entero aleatorio, ponderado de acuerdo con la entrada. Por ejemplo, 3d6
debería producir más 10
s que 4
s .
Casos de prueba
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
Este es el código de golf , ¡así que el código más corto en bytes ganará!
n
y p
como opcional, pero entrada que elige no incluirlos ( d20+
) como no válidos.
+
signo solo debe agregarse si p
se proporciona el modificador .
1d4+1d6
para un pícaro que ataca con una daga) o que tiene un negativo p
(por ejemplo, 1d20-1
para una verificación de habilidad sin rangos / entrenamiento y un modificador de habilidad negativo).
2d8 + 1d6 + 4
? Vas a pasar un mal momento
02d05+073
una entrada válida?