Il talento arriva a DSA


9

Alcuni amici e io abbiamo giocato a DSA (un gioco di ruolo prevalentemente tedesco molto simile a D&D). Mi chiedevo quali fossero le possibilità di passare i tiri, quindi dovrai scrivere del codice per calcolarlo.

Il tuo personaggio è definito da statistiche (da 8 a 14) e (TV) valori di talento (da 0 a 21). Per ora useremo l'arrampicata come esempio.

Talent test

Un talento (arrampicata) assomiglia a questo: (Coraggio-Destrezza-Forza) TV: 7. Per testare un personaggio su un talento tira su queste statistiche con un dado a 20 facce e prova a scendere sotto o uguale alla statistica, se lo fai bene. In caso contrario, è possibile utilizzare i punti TV per ridurre il rotolo con un rapporto di 1: 1.

Esempio

Un cacciatore con coraggio 12, destrezza 13 e forza 14 sta cercando di arrampicarsi su un albero, la sua TV è 7.

Tira un 3, il valore è inferiore a 12, quindi ha superato quel tiro.

Quindi lancia un 17, 17 è 4 in più di 13, quindi 4 TV si abituano con 3 a sinistra.

Per l'ultimo tiro ottieni un 14, posto sul passato.

Tutti i tiri sono passati e il cacciatore è riuscito a scalare l'albero, 3 TV sono rimaste.

Ingresso

4 valori in qualsiasi formato tu scelga, presi dall'input standard della tua lingua. Tuttavia, deve essere in questo ordine.

Ad esempio 12 13 14 7o 12,13,14,7o come un array {12,13,14,7} o misto[12, 14, 8], 3

Produzione

La possibilità di quanto spesso passano i rulli.

Ad esempio (per i valori sopra)0.803

12,14,8,3 = 0.322

11,11,12,11 = 0.840

Per il bonus: Anche in questo caso la formulazione non è il problema, emettilo come preferisci ma nel seguente ordine:

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

e così via fino a quando non rimane più TV.

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

Sfida, regole e bonus

  • Dovresti scoprire, dato l'input, la possibilità di passare i rotoli con un'accuratezza del + - 0,5%.

  • -20% se il tuo programma offre anche la possibilità di passare con la nTV (vedi output).

  • Questo è , quindi vince il codice più breve in byte!


1
I "4 valori nel formato che scegli" includono il prendere in un ordine diverso?
Martin Ender,

1
O qualcosa del genere [12, 14, 8], 3?
Martin Ender,

Pensavo di avere incluso l'ordine, è ora. Sono ammessi anche input misti.
Eumel,

Risposte:


2

Pyth - 21 20 19 byte

Salvato 1 byte grazie a @ThomasKwa

.Omgvzsg#0-VdQ^SyT3

Test Suite .


Pyth è così buono ... Questo è il tipo di domanda di APL, e ne ho solo 27 in APL.
lirtosiast,

si supponeva che l'ordine dell'input fosse stato stat,stat,stat,TVspecificato solo ora. Tuttavia, se riesci a modificarlo facilmente sarebbe bello. Potresti inserire una spiegazione?
Eumel,

@Eumel certo, cambiare l'ordine non dovrebbe essere un problema, sono al telefono in questo momento, lo farò quando torno a casa.
Maltysen,

1

Dyalog APL, 28 byte

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

Questo approccio è uguale a quello di @Maltysen. Non possiamo essere sicuri della precisione dello 0,5% se disegniamo solo poche migliaia di tiri casuali di dadi, quindi prendiamo invece la media su tutti i tiri possibili. Questo prende le tre statistiche come argomento di sinistra e il valore del talento a destra.

Provalo qui !

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.