Des amis et moi avons joué à du DSA (un RPG de table principalement allemand comme D&D). Je me demandais quelles sont les chances de passer des rouleaux, vous devrez donc écrire du code pour le calculer.
Votre personnage est défini par des statistiques (de 8 à 14) et des valeurs de talent (TV) (0 à 21). Pour l'instant, nous utiliserons l'escalade comme exemple.
Tests de talents
Un talent (escalade) ressemble à ceci: (Courage-Dextérité-Force) TV: 7. Pour tester un personnage sur un talent, vous lancez sur ces statistiques avec un dé à 20 faces et essayez d'obtenir en dessous ou égal à la statistique, si tu le fais bien. Sinon, vous pouvez utiliser vos points TV pour réduire le roulement avec un rapport de 1: 1.
Exemple
Un chasseur avec courage 12, dextérité 13 et force 14 essaie de grimper à un arbre, sa télé est 7.
Il obtient un 3, la valeur est inférieure à 12, il a donc réussi ce jet.
Puis il lance un 17, 17 est 4 de plus que 13, donc 4 TV s'épuisent avec 3 à gauche.
Pour le dernier lancer, vous obtenez un 14, place sur passé.
Tous les rouleaux sont passés et le chasseur a réussi à grimper à l'arbre, il reste 3 TV.
Contribution
4 valeurs dans n'importe quel format que vous choisissez, prises à partir de l'entrée standard de votre langue. Il doit cependant être dans cet ordre.
Par exemple 12 13 14 7
ou 12,13,14,7
ou sous forme de tableau {12,13,14,7} ou mixte[12, 14, 8], 3
Production
La chance de la fréquence à laquelle les rouleaux passent.
Par exemple (pour les valeurs ci-dessus)0.803
12,14,8,3 = 0.322
11,11,12,11 = 0.840
Pour le bonus: encore une fois le formatage n'est pas le problème ici, sortez-le comme vous le souhaitez mais dans l'ordre suivant:
failed/with 0/with 1/with 2/with 3/with 4/with 5/with 6/with 7
et ainsi de suite jusqu'à ce qu'il ne reste plus de téléviseur.
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
Défi et règles et bonus
Vous le saurez, étant donné l'entrée, la chance de passer les rouleaux avec une précision de + - 0,5%.
-20% si votre programme sort également les chances de passer avec la
n
TV (voir sortie).C'est le code-golf , donc le code le plus court en octets gagne!
[12, 14, 8], 3
?Réponses:
Pyth -
212019 octets1 octets enregistrés grâce à @ThomasKwa
Suite de tests .
la source
stat,stat,stat,TV
je ne l'ai spécifié que maintenant. Cependant, si vous pouvez le modifier facilement, ce serait bien. Pourriez-vous fournir une explication?Dyalog APL, 28 octets
Cette approche est la même que celle de @ Maltysen. Nous ne pouvons pas être sûrs d'une précision de 0,5% si nous tirons simplement quelques milliers de lancers de dés aléatoires, nous prenons donc la moyenne sur tous les lancers possibles. Cela prend les trois statistiques comme argument de gauche et la valeur du talent à droite.
Essayez-le ici !
la source