Bakat gulungan di DSA

9

Beberapa teman dan saya telah memainkan beberapa DSA (RPG tabletop terutama Jerman seperti D & D). Saya bertanya-tanya apa peluang melewati gulungan, jadi Anda harus menulis beberapa kode untuk menghitungnya.

Karakter Anda ditentukan oleh statistik (dari 8 hingga 14) dan nilai Talent (TV) (0 hingga 21). Untuk saat ini kita akan menggunakan pendakian sebagai contoh.

Tes bakat

Bakat (panjat) terlihat seperti ini: (Keberanian-Kecekatan-Kekuatan) TV: 7. Untuk menguji karakter pada bakat Anda menggulirkan statistik ini dengan dadu 20 sisi dan mencoba untuk mendapatkan di bawah atau sama dengan stat, jika kamu melakukannya dengan baik. Jika tidak, Anda dapat menggunakan titik TV Anda untuk mengurangi gulungan dengan rasio 1: 1.

Contoh

Seorang pemburu dengan keberanian 12, ketangkasan 13 dan kekuatan 14 sedang mencoba memanjat pohon, TV-nya 7.

Ia menggulung 3, nilainya di bawah 12 sehingga ia melewati gulungan itu.

Lalu ia memutar 17, 17 adalah 4 lebih dari 13, sehingga 4 TV terbiasa dengan 3 yang tersisa.

Untuk roll terakhir, Anda mendapat 14, posisi berlalu.

Semua gulungan dilewatkan dan pemburu berhasil memanjat pohon, 3 TV tersisa.

Memasukkan

4 nilai dalam format apa pun yang Anda pilih, diambil dari input standar bahasa Anda. Itu harus dalam urutan ini.

Misalnya 12 13 14 7atau 12,13,14,7atau sebagai array {12,13,14,7} atau dicampur[12, 14, 8], 3

Keluaran

Kesempatan seberapa sering gulungan berlalu.

Misalnya (untuk nilai di atas)0.803

12,14,8,3 = 0.322

11,11,12,11 = 0.840

Untuk bonus: Sekali lagi memformat bukan masalah di sini, output sesuai keinginan Anda tetapi dengan urutan sebagai berikut:

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

dan seterusnya sampai tidak ada TV yang tersisa.

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

Tantangan dan aturan dan bonus

  • Anda akan menemukan diberi input kesempatan untuk lulus gulungan ke + - 0,5% akurasi.

  • -20% jika program Anda juga menampilkan peluang untuk lulus dengan nTV (lihat hasil).

  • Ini adalah , jadi kode terpendek dalam byte menang!

Eumel
sumber
1
Apakah "4 nilai dalam format apa pun yang Anda pilih" termasuk mengambilnya dalam urutan yang berbeda?
Martin Ender
1
Atau semacamnya [12, 14, 8], 3?
Martin Ender
Saya pikir saya sudah memasukkan pesanan, sekarang sudah. Input campuran juga diizinkan.
Eumel

Jawaban:

2

Pyth - 21 20 19 byte

Disimpan 1 byte berkat @ThomasKwa

.Omgvzsg#0-VdQ^SyT3

Test Suite .

Maltysen
sumber
Pyth sangat baik ... Ini adalah jenis pertanyaan APL, dan saya hanya punya 27 di APL.
lirtosiast
urutan input yang seharusnya stat,stat,stat,TVsaya lakukan hanya menentukan itu sekarang. Namun jika Anda dapat memodifikasi dengan mudah itu akan menyenangkan. Bisakah Anda memberikan penjelasan?
Eumel
@Eumel yakin, mengubah urutan seharusnya tidak menjadi masalah, saya sedang menelepon sekarang, saya akan melakukannya ketika saya pulang.
Maltysen
1

Dyalog APL, 28 byte

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

Pendekatan ini sama dengan @ Maltysen. Kami tidak dapat memastikan keakuratan 0,5% jika kami hanya menggambar beberapa ribu gulungan dadu acak, jadi kami mengambil rata-rata dari semua gulungan yang mungkin. Ini mengambil tiga statistik sebagai argumen kiri, dan nilai bakat di sebelah kanan.

Coba di sini !

lirtosiast
sumber