Talent rollt in DSA

9

Einige Freunde und ich haben DSA gespielt (ein hauptsächlich deutsches Tabletop-Rollenspiel, ähnlich wie D & D). Ich habe mich gefragt, wie hoch die Chance ist, Rollen zu überholen. Sie müssen also einen Code schreiben, um ihn zu berechnen.

Dein Charakter wird durch Statistiken (von 8 bis 14) und (TV) Talentwerte (0 bis 21) definiert. Im Moment werden wir das Klettern als Beispiel verwenden.

Talenttests

Ein Talent (Klettern) sieht folgendermaßen aus: (Mut-Geschicklichkeit-Stärke) TV: 7. Um einen Charakter auf ein Talent zu testen, würfeln Sie mit einem 20-seitigen Würfel auf diesen Statistiken und versuchen, unter oder gleich dem Wert zu gelangen, wenn du machst das gut Wenn nicht, können Sie Ihre TV-Punkte verwenden, um die Rolle im Verhältnis 1: 1 zu reduzieren.

Beispiel

Ein Jäger mit Mut 12, Geschicklichkeit 13 und Stärke 14 versucht auf einen Baum zu klettern, sein Fernseher ist 7.

Er würfelt eine 3, der Wert liegt unter 12, also hat er diesen Wurf bestanden.

Dann würfelt er eine 17, 17 ist 4 mehr als 13, so dass 4 Fernseher mit 3 übrig sind.

Für den letzten Wurf erhalten Sie eine 14, genau richtig.

Alle Rollen sind bestanden und der Jäger hat es geschafft, auf den Baum zu klettern, 3 Fernseher sind übrig.

Eingang

4 Werte in einem beliebigen Format, entnommen aus der Standardeingabe Ihrer Sprache. Es muss jedoch in dieser Reihenfolge sein.

ZB 12 13 14 7oder 12,13,14,7oder als Array {12,13,14,7} oder gemischt[12, 14, 8], 3

Ausgabe

Die Chance, wie oft die Rollen vergehen.

ZB (für Werte oben)0.803

12,14,8,3 = 0.322

11,11,12,11 = 0.840

Für den Bonus: Auch hier ist das Formatieren nicht das Problem. Geben Sie es nach Belieben aus, jedoch in der folgenden Reihenfolge:

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

und so weiter, bis kein Fernseher mehr übrig ist.

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

Herausforderung und Regeln und Bonus

  • Sie müssen anhand der Eingabe die Möglichkeit herausfinden, die Rollen mit einer Genauigkeit von + - 0,5% zu übergeben.

  • -20%, wenn Ihr Programm auch die Wahrscheinlichkeit ausgibt, mit dem nFernseher zu bestehen (siehe Ausgabe).

  • Dies ist , also gewinnt der kürzeste Code in Bytes!

Eumel
quelle
1
Umfasst "4 Werte in einem von Ihnen gewählten Format" die Aufnahme in eine andere Reihenfolge?
Martin Ender
1
Oder so ähnlich [12, 14, 8], 3?
Martin Ender
Ich dachte, ich hätte die Bestellung enthalten, es ist jetzt. Auch gemischte Eingaben sind zulässig.
Eumel

Antworten:

2

Pyth - 21 20 19 Bytes

1 Bytes dank @ThomasKwa gespeichert

.Omgvzsg#0-VdQ^SyT3

Testsuite .

Maltysen
quelle
Pyth ist so gut ... Dies ist die Art von APL-Frage, und ich habe nur 27 in APL.
Lirtosiast
Es wurde angenommen, dass die Reihenfolge der Eingabe so ist, dass stat,stat,stat,TVich dies jetzt nur spezifiziere. Wenn Sie dies jedoch leicht ändern können, wäre das schön. Könnten Sie eine Erklärung abgeben?
Eumel
@Eumel sicher, das Ändern der Reihenfolge sollte nicht so problematisch sein, ich telefoniere gerade, ich mache es, wenn ich nach Hause komme.
Maltysen
1

Dyalog APL, 28 Bytes

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

Dieser Ansatz ist der gleiche wie bei @ Maltysen. Wir können uns einer Genauigkeit von 0,5% nicht sicher sein , wenn wir nur ein paar tausend zufällige Würfelwürfe ziehen, also nehmen wir stattdessen den Durchschnitt über alle möglichen Würfe. Dies nimmt die drei Statistiken als linkes Argument und den Talentwert rechts.

Probieren Sie es hier aus !

lirtosiast
quelle