Мы с друзьями играли в DSA (в основном немецкую настольную RPG, очень похожую на D & D). Мне было интересно, какова вероятность передачи бросков, поэтому вам придется написать код для его расчета.
Ваш персонаж определяется статистикой (от 8 до 14) и (TV) значениями талантов (от 0 до 21). А пока мы будем использовать скалолазание в качестве примера.
Тесты талантов
Талант (скалолазание) выглядит следующим образом: (Courage-Dexterity-Strength) TV: 7. Чтобы проверить персонажа на таланте, вы бросаете на эту статистику 20-сторонним кубиком и пытаетесь стать ниже или равным стату, если ты делаешь это хорошо. Если нет, то вы можете использовать очки телевизора, чтобы уменьшить бросок с соотношением 1: 1.
пример
Охотник с мужеством 12, ловкостью 13 и силой 14 пытается залезть на дерево, его телевизор - 7.
Он бросает 3, значение ниже 12, поэтому он прошел этот бросок.
Затем он бросает 17, 17 на 4 больше, чем 13, поэтому 4 телевизора привыкают с 3 слева.
За последний бросок вы получаете 14, место на проходе.
Все броски пройдены и охотнику удалось залезть на дерево, осталось 3 телевизора.
вход
4 значения в любом выбранном формате, взятые из стандартного ввода вашего языка. Это должно быть в этом порядке, хотя.
Например, 12 13 14 7
или 12,13,14,7
или как массив {12,13,14,7} или смешанный[12, 14, 8], 3
Вывод
Вероятность того, как часто проходят броски.
Например (для значений выше)0.803
12,14,8,3 = 0.322
11,11,12,11 = 0.840
Для бонуса: опять форматирование здесь не проблема, выведите его так, как вам нравится, но в следующем порядке:
failed/with 0/with 1/with 2/with 3/with 4/with 5/with 6/with 7
и так до тех пор, пока не останется телевизора.
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
Испытание и правила и бонус
По входным данным вы узнаете, что шанс пройти броски с точностью + - 0,5%.
-20%, если ваша программа также выводит шансы пройти с
n
телевизором (см. Вывод).Это Код-гольфтак что кратчайший код в байтах побеждает!
[12, 14, 8], 3
?