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 7
oder 12,13,14,7
oder 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
n
Fernseher zu bestehen (siehe Ausgabe).Dies ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
[12, 14, 8], 3
?Antworten:
Pyth -
212019 Bytes1 Bytes dank @ThomasKwa gespeichert
Testsuite .
quelle
stat,stat,stat,TV
ich dies jetzt nur spezifiziere. Wenn Sie dies jedoch leicht ändern können, wäre das schön. Könnten Sie eine Erklärung abgeben?Dyalog APL, 28 Bytes
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 !
quelle