Талант катится в DSA

9

Мы с друзьями играли в 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телевизором (см. Вывод).

  • Это так что кратчайший код в байтах побеждает!

Eumel
источник
1
Включает ли «4 значения в любом выбранном вами формате» их в другом порядке?
Мартин Эндер
1
Или что-то вроде [12, 14, 8], 3?
Мартин Эндер
Я думал, что я включил заказ, его сейчас. Смешанные входы также допускаются.
Eumel

Ответы:

2

Pyth - 21 20 19 байтов

Сохранено 1 байт благодаря @ThomasKwa

.Omgvzsg#0-VdQ^SyT3

Тестовый пакет .

Maltysen
источник
Pyth так хорош ... Это тип вопросов APL, а у меня только 27 в APL.
lirtosiast
Предполагалось, что порядок ввода будет определен stat,stat,stat,TVтолько сейчас. Однако, если вы можете изменить это легко, это было бы хорошо. Не могли бы вы дать объяснение?
Eumel
@ Конечно, смена заказа не должна быть проблемой, я сейчас разговариваю по телефону, я сделаю это, когда вернусь домой.
Maltysen
1

Дьялог АПЛ, 28 байт

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

Этот подход такой же, как у @ Maltysen's. Мы не можем быть уверены в точности 0,5%, если просто нарисуем несколько тысяч случайных бросков костей, поэтому вместо этого мы берем среднее значение по всем возможным броскам. Это принимает три характеристики в качестве левого аргумента и значение таланта справа.

Попробуй это здесь !

lirtosiast
источник