Rolos de talentos no DSA

9

Alguns amigos e eu já jogamos DSA (um RPG de mesa principalmente alemão, como D&D). Eu queria saber qual é a chance de passar nos rolos, então você terá que escrever algum código para calculá-lo.

Seu personagem é definido por estatísticas (de 8 a 14) e valores de talento (TV) (0 a 21). Por enquanto, usaremos a escalada como exemplo.

Testes de talentos

Um talento (escalada) é assim: (Força da destreza da coragem) TV: 7. Para testar um personagem em um talento, você rola nessas estatísticas com dados de 20 lados e tenta ficar abaixo ou igual ao status, se você faz isso bem. Caso contrário, você pode usar seus pontos de TV para reduzir o rolo na proporção de 1: 1.

Exemplo

Um caçador com coragem 12, destreza 13 e força 14 está tentando subir em uma árvore, sua TV é 7.

Ele rola um 3, o valor está abaixo de 12, então ele passou nesse teste.

Então ele tira 17, 17 é 4 a mais que 13, então 4 TVs se acostumam com 3 restantes.

Para o último lançamento, você recebe 14 pontos no passe.

Todos os rolos são passados ​​e o caçador conseguiu subir na árvore, restam 3 TVs.

Entrada

4 valores em qualquer formato que você escolher, extraído da entrada padrão do seu idioma. Mas tem que estar nessa ordem.

Por exemplo, 12 13 14 7ou 12,13,14,7ou como uma matriz {12,13,14,7} ou mista[12, 14, 8], 3

Resultado

A chance de quantas vezes os rolos passam.

Por exemplo (para valores acima)0.803

12,14,8,3 = 0.322

11,11,12,11 = 0.840

Para o bônus: Novamente, a formatação não é o problema aqui, produza como quiser, mas na seguinte ordem:

failed/with 0/with 1/with 2/with 3/with 4/with 5/with 6/with 7 

e assim sucessivamente até que nenhuma TV seja deixada.

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

Desafio, regras e bônus

  • Você deve descobrir, dada a entrada, a chance de passar os rolos com uma precisão de + - 0,5%.

  • -20% se o seu programa também gerar chances de passar com a nTV (consulte a saída).

  • Isso é , então o código mais curto em bytes vence!

Eumel
fonte
11
"4 valores em qualquer formato que você escolher" inclui levá-los em uma ordem diferente?
Martin Ender
11
Ou algo assim [12, 14, 8], 3?
Martin Ender
Eu pensei que tinha o pedido incluído, está agora. Entradas mistas também são permitidas.
Eumel

Respostas:

2

Pitão - 21 20 19 bytes

Guardado 1 bytes graças a @ThomasKwa

.Omgvzsg#0-VdQ^SyT3

Conjunto de Teste .

Maltysen
fonte
Pyth é tão bom ... Esse é o tipo de pergunta da APL, e eu só tenho 27 na APL.
precisa saber é o seguinte
a ordem da entrada era suposta; stat,stat,stat,TVeu só especifiquei isso agora. No entanto, se você pode modificar isso facilmente, seria bom. Você poderia dar uma explicação?
Eumel
@ Claro, mudar a ordem não deve ser um problema, estou no telefone agora, farei isso quando chegar em casa.
Maltysen 4/01/16
1

Dyalog APL, 28 bytes

{(+/÷⍴)⍵≥∊+/¨0⌈(⊂⍺)-⍨¨⍳3⍴20}

Essa abordagem é a mesma da @ Maltysen. Não podemos ter certeza de precisão de 0,5% se apenas fizermos alguns milhares de jogadas aleatórias de dados, portanto, calculamos a média de todas as jogadas possíveis. Isso leva as três estatísticas como argumento à esquerda e o valor do talento à direita.

Experimente aqui !

lirtosiast
fonte