DSAのタレントロール


9

何人かの友人と私はDSA(主にドイツの卓上型RPGであり、D&Dによく似ています)をプレイしました。ロールをパスするチャンスは何なのだろうと思っていたので、それを計算するためにいくつかのコードを書く必要があります。

あなたのキャラクターは、統計(8から14)と(TV)タレント値(0から21)によって定義されます。ここでは、例として登山を使用します。

才能テスト

タレント(クライミング)は次のようになります。(勇気-敏捷性-強さ)TV:7.キャラクターのタレントをテストするには、20面のサイコロでこれらの統計を転がし、統計以下になるようにします。あなたはそれをうまくやっています。そうでない場合は、TVポイントを使用して、ロールを1:1の比率で減らすことができます。

勇気12、器用さ13、強さ14のハンターが木に登ろうとしています。テレビは7です。

彼は3を振り、値は12未満なので、その目を通過しました。

それから彼は17を出して、17は13より4多いので、4台のテレビが残り3台で使い果たされます。

最後のロールでは、14のスポットがパスしました。

すべてのロールが通過し、ハンターはなんとか木に登ることができ、3台のテレビが残っています。

入力

言語の標準入力から取得した、選択した任意の形式の4つの値。ただし、この順序でなければなりません。

たとえば12 13 14 712,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%の精度でパスするチャンスを見つける必要があります。

  • プログラムがnTVで合格するチャンスも出力する場合は-20%(出力を参照)。

  • これはなので、バイト単位の最短コードが優先されます!


1
「選択した任意の形式の4つの値」には、それらを異なる順序で取得することが含まれますか?
マーティンエンダー

1
または何かのような[12, 14, 8], 3
マーティンエンダー

私は注文が含まれていると思いました、それは今です。混合入力も可能です。
2016年

回答:


2

Pyth- 21 20 19バイト

@ThomasKwaのおかげで1バイト節約

.Omgvzsg#0-VdQ^SyT3

テストスイート


Pythはとても良いです...これはAPLのタイプの質問です、そして私はAPLに27しかありません。
リルトシアスト2016年

入力の順序は次のとおりであると考えられましたがstat,stat,stat,TV、今はそれを指定するだけです。ただし、それを簡単に変更できる場合は、それでよいでしょう。説明を入れてもらえますか?
Eumel

@Eumel確かに、注文の変更は問題になりません。今電話中です。家に帰ったらそれをします。
Maltysen 2016年

1

Dyalog APL、28バイト

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

このアプローチは、@ Maltysenのアプローチと同じです。数千のランダムなサイコロを引いただけでは、0.5%の正確性は保証できません。代わりに、可能なすべてのロールの平均を取ります。これは、左の引数として3つの統計を取り、右側にタレントの値をとります。

ここでお試しください!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.