Algunos amigos y yo hemos jugado DSA (un juego de rol de mesa principalmente alemán muy parecido a D&D). Me preguntaba cuáles son las posibilidades de pasar las tiradas, por lo que tendrá que escribir un código para calcularlo.
Tu personaje está definido por estadísticas (de 8 a 14) y (TV) Valores de talento (0 a 21). Por ahora usaremos la escalada como ejemplo.
Pruebas de talento
Un talento (escalada) se ve así: (Coraje-Destreza-Fuerza) TV: 7. Para probar un personaje en un talento, tira estas estadísticas con un dado de 20 lados e intenta llegar por debajo o igual a la estadística, si lo haces bien De lo contrario, puede usar sus puntos de TV para reducir el rollo con una proporción de 1: 1.
Ejemplo
Un cazador con coraje 12, destreza 13 y fuerza 14 está tratando de trepar a un árbol, su televisor es 7.
Tira un 3, el valor está por debajo de 12, por lo que pasó esa tirada.
Luego saca un 17, 17 es 4 más que 13, por lo que 4 TV se acostumbran con 3 restantes.
Para la última tirada obtienes un 14, punto al pasar.
Se pasan todos los rollos y el cazador logró trepar al árbol, quedan 3 televisores.
Entrada
4 valores en cualquier formato que elija, tomados de la entrada estándar de su idioma. Sin embargo, tiene que estar en este orden.
Por ejemplo, 12 13 14 7
or 12,13,14,7
o como una matriz {12,13,14,7} o mixta[12, 14, 8], 3
Salida
La posibilidad de con qué frecuencia pasan los rollos.
Por ejemplo (para valores anteriores)0.803
12,14,8,3 = 0.322
11,11,12,11 = 0.840
Para la bonificación: nuevamente el formateo no es el problema aquí, envíalo como quieras pero en el siguiente orden:
failed/with 0/with 1/with 2/with 3/with 4/with 5/with 6/with 7
y así sucesivamente hasta que no quede televisión.
12,13,14,7 = 0.197/0.075/0.089/0.084/0.078/0.073/0.068/0.063/0.273
12,14,8,3 = 0.678/0.056/0.051/0.047/0.168
Desafío y reglas y bonificación
Deberá descubrir, dada la entrada, la posibilidad de pasar las tiradas con una precisión de + - 0.5%.
-20% si su programa también genera posibilidades de pasar con
n
TV (ver salida).Este es el código de golf , por lo que gana el código más corto en bytes.
[12, 14, 8], 3
?Respuestas:
Pyth -
212019 bytesGuardado 1 bytes gracias a @ThomasKwa
Test Suite .
fuente
stat,stat,stat,TV
que solo especifiqué eso ahora. Sin embargo, si puede modificarlo fácilmente, sería bueno. ¿Podrías dar una explicación?Dyalog APL, 28 bytes
Este enfoque es el mismo que el de @ Maltysen. No podemos estar seguros de una precisión del 0.5% si solo sacamos unos pocos miles de tiradas de dados al azar, por lo que en su lugar tomamos el promedio sobre todas las tiradas posibles. Esto toma las tres estadísticas como el argumento izquierdo y el valor del talento a la derecha.
Pruébalo aquí !
fuente