Rzut talentów w DSA

9

Razem z przyjaciółmi graliśmy w DSA (głównie niemieckie RPG typu tabletop, bardzo podobne do D&D). Zastanawiałem się, jaka jest szansa na podanie rzutu, więc będziesz musiał napisać kod, aby go obliczyć.

Twoja postać jest definiowana przez statystyki (od 8 do 14) i wartości talentów (TV) (od 0 do 21). Na razie użyjemy wspinaczki jako przykładu.

Testy talentów

Talent (wspinaczka) wygląda następująco: (Odwaga-Zręczność-Siła) TV: 7. Aby przetestować postać na talencie, rzucasz tymi statystykami za pomocą 20-stronnych kości i starasz się zejść poniżej lub równej wartości statystyki, jeśli robisz to dobrze. Jeśli nie, możesz użyć punktów telewizyjnych, aby zmniejszyć rzut przy stosunku 1: 1.

Przykład

Łowca z odwagą 12, zręcznością 13 i siłą 14 próbuje wspiąć się na drzewo, jego telewizor to 7.

Rzuca 3, wartość jest mniejsza niż 12, więc zdał ten rzut.

Następnie rzuca 17, 17 to 4 więcej niż 13, więc 4 telewizory się przyzwyczają z 3 pozostałymi.

Za ostatni rzut otrzymujesz 14, miejsce za zaliczone.

Wszystkie bułki są przekazywane i myśliwemu udało się wspiąć na drzewo, pozostały 3 telewizory.

Wejście

4 wartości w dowolnym wybranym przez ciebie formacie, wzięte ze standardowego wejścia twojego języka. Jednak musi być w tej kolejności.

Np. 12 13 14 7Lub 12,13,14,7jako tablica {12,13,14,7} lub mieszana[12, 14, 8], 3

Wynik

Szansa na to, jak często mijają rzuty.

Np. (Dla powyższych wartości)0.803

12,14,8,3 = 0.322

11,11,12,11 = 0.840

Dodatkowa korzyść: Ponowne sformatowanie nie jest tutaj problemem, wypisz je, jak chcesz, ale w następującej kolejności:

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

i tak dalej, dopóki nie pozostanie telewizor.

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

Wyzwanie, zasady i bonus

  • Dowiesz się, biorąc pod uwagę wkład, szansę przekazania rzutów z dokładnością + - 0,5%.

  • -20%, jeśli twój program wyświetla również szanse na przejście z nTV (patrz wyjście).

  • To jest , więc wygrywa najkrótszy kod w bajtach!

Eumel
źródło
1
Czy „4 wartości w dowolnym wybranym formacie” obejmują ich przyjmowanie w innej kolejności?
Martin Ender
1
Czy coś w tym stylu [12, 14, 8], 3?
Martin Ender
Myślałem, że mam zamówienie uwzględnione, jest teraz. Dozwolone są również mieszane dane wejściowe.
Eumel

Odpowiedzi:

2

Pyth - 21 20 19 bajtów

Zaoszczędzono 1 bajt dzięki @ThomasKwa

.Omgvzsg#0-VdQ^SyT3

Pakiet testowy .

Maltysen
źródło
Pyth jest taki dobry ... To pytanie APL-a, a ja mam tylko 27 w APL-u.
lirtosiast
kolejność danych wejściowych była przypuszczalna, ale stat,stat,stat,TVja tylko podałem to teraz. Jeśli jednak możesz to łatwo zmodyfikować, byłoby miło. Czy możesz podać wyjaśnienie?
Eumel
@Eumel, na pewno zmiana porządku nie powinna stanowić problemu, rozmawiam teraz przez telefon, zrobię to, kiedy wrócę do domu.
Maltysen
1

Dyalog APL, 28 bajtów

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

To podejście jest takie samo jak @ Maltysen's. Nie możemy być pewni 0,5% dokładności, jeśli wylosujemy kilka tysięcy losowych rzutów kostkami, więc zamiast tego bierzemy średnią z wszystkich możliwych rzutów. To bierze trzy statystyki za lewy argument, a wartość talentu po prawej.

Wypróbuj tutaj !

lirtosiast
źródło