Chcę grać w Dungeons and Dragons, ale nie mam żadnych kości! Twoim zadaniem jest rzucić kostką D&D.
Specyfikacja formatu wejściowego w postaci Backus-Naur to:
<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>
Opcjonalna liczba całkowita przed d
jest liczbą kości do rzucenia; musi być co najmniej 1
i domyślnie ustawiony, 1
jeśli nie jest dostarczony.
Wymagana liczba całkowita bezpośrednio po d
jest liczbą stron każdej kości; to musi być przynajmniej 1
. Boki każdej kości są odrębnymi kolejnymi dodatnimi liczbami całkowitymi, zaczynając od 1
.
Opcjonalnym modyfikatorem może być +0
i domyślnie jest ustawiony, +0
jeśli nie jest określony.
Na przykład dla danych wejściowych 2d10+5
generujesz dwie liczby losowe od 1 do 10 włącznie, dodajesz je razem i dodajesz 5. Następnie otrzymasz wynik.
Jeśli otrzymasz nieprawidłowe dane, takie jak 2d
, d20+
, 0d4
, 2d5+1+2
, 2+2
, lub cokolwiek innego, co nie pasuje do tego formatu, trzeba wyjście „ Invalid input
”. W przeciwnym razie musisz wyprowadzić tylko jedną losową liczbę całkowitą, ważoną zgodnie z danymi wejściowymi. Na przykład 3d6
powinien produkować więcej 10
s niż 4
s .
Przypadki testowe
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
To jest code-golf , więc wygra najkrótszy kod w bajtach!
n
i p
jako opcjonalne, ale dane wejściowe, które decydują się nie uwzględniać ich ( d20+
) jako niepoprawnych.
+
znak należy dodać tylko wtedy, gdy p
podany jest modyfikator .
1d4+1d6
Za Rogue'a skradającego się za pomocą sztyletu) lub mający negatywne p
(np. 1d20-1
Za sprawdzenie umiejętności bez rang / treningu i modyfikatora negatywnej zdolności).
2d8 + 1d6 + 4
? Będziesz miał zły czas
02d05+073
jest poprawny wpis?