Lý lịch
Một nguồn ennui trong các trò chơi nhập vai trên bàn là xử lý các cuộn có nhiều xúc xắc. Đúc một câu thần chú tan rã có thể là tức thời, nhưng lăn và thêm 40 con xúc xắc chắc chắn là không!
Một số đề xuất để xử lý việc này được thảo luận tại rpg.stackexchange.com . Tuy nhiên, một số trong số họ, chẳng hạn như sử dụng chương trình lăn hoặc xúc xắc trung bình, lấy đi một số niềm vui và cảm giác kiểm soát từ người chơi. Những người khác, chẳng hạn như gieo 4 con xúc xắc và nhân tổng số 10, làm cho kết quả trở nên lung lay hơn nhiều (trong khi trung bình xúc xắc hoạt động theo hướng ngược lại).
Câu hỏi này liên quan đến một phương pháp giảm số lượng xúc xắc mà không thay đổi kết quả trung bình (trung bình) hoặc độ xoáy của nó (phương sai).
Ký hiệu và toán học
Trong câu hỏi này, chúng tôi sẽ sử dụng ký hiệu sau để thể hiện cuộn súc sắc:
- n d k (ví dụ 40d6) đề cập đến tổng số n cuộn của một khuôn mặt k.
- n d k * c (ví dụ 4d6 * 10) mô tả nhân kết quả với hằng số c.
- Chúng tôi cũng có thể thêm các cuộn (ví dụ 4d6 * 10 + 40d6) và hằng số (ví dụ 4d6 + 10).
Đối với một cuộn chết, chúng ta có thể chỉ ra rằng:
- Có nghĩa là : E [1d k ] = (k + 1) / 2
- Phương sai : Var (1d k ) = (k - 1) (k + 1) / 12
Sử dụng các thuộc tính cơ bản của giá trị trung bình và phương sai, chúng ta có thể suy luận thêm rằng:
- Nghĩa là : E [ m d k * a + n d l * b + c ] = am .E [1d k ] + bn . [1d l ] + c
- Phương sai : Var ( m d k * a + n d l * b + c ] = a ². M .Var (1d k ) + b ². N .Var (1d l )
Bài tập
Cho ba số nguyên n , k và r , chương trình của bạn sẽ xuất ra cách xấp xỉ n d k trong hầu hết các cuộn r , với các ràng buộc sau:
- Các giải pháp nên có cùng giá trị trung bình và phương sai như n d k .
- Giải pháp nên chứa số lượng cuộn lớn nhất có thể nhỏ hơn hoặc bằng r , vì càng nhiều cuộn tạo ra phân phối mượt mà hơn.
- Bạn nên hạn chế các giải pháp của mình chỉ sử dụng xúc xắc k , trừ khi bạn nhắm tới Phần thưởng (xem bên dưới).
- Nếu không có giải pháp nào (vì r quá nhỏ), chương trình sẽ xuất ra chuỗi "TÔI LÀ MỘT THIÊN CHÚA CẢM XÚC CỦA SEXY!".
- Các tham số được truyền vào dưới dạng một chuỗi được phân tách bằng dấu cách.
- Bạn có thể giả sử rằng 1 ≤ n 100, 1 ≤ r ≤ n và k là một trong 4, 6, 8, 10, 12 và 20 (súc sắc tiêu chuẩn được sử dụng trong mặt bàn).
- Đầu ra phải ở định dạng được mô tả trong Ký hiệu (ví dụ 4d6 * 10 + 5), với các khoảng trắng tùy chọn xung quanh + s nhưng không ở đâu khác. Số nhân đơn vị cũng là tùy chọn: cả 4d6 * 1 và 4d6 đều hợp lệ.
Bạn có thể viết chương trình hoặc hàm, lấy đầu vào qua STDIN (hoặc thay thế gần nhất), đối số dòng lệnh hoặc đối số hàm. Kết quả phải được in thành STDOUT (hoặc thay thế gần nhất) hoặc trả về dưới dạng chuỗi.
Ví dụ
>> "10 6 10"
10d6
>> "10 6 4"
2d6*2+2d6+14
>> "10 6 3"
1d6*3+1d6+21
>> "10 6 2"
1d6*3+1d6+21
>> "10 6 1"
I AM A SEXY SHOELESS GOD OF WAR!
Chấm điểm
Mã ngắn nhất sẽ thắng. Quy tắc tiêu chuẩn áp dụng.
Tiền thưởng
-33% (làm tròn xuống trước khi trừ) nếu chương trình của bạn cũng trả về các giải pháp bao gồm xúc xắc hợp lệ khác với k (trong đó các giá trị hợp lệ, như đã đề cập ở trên, là 4, 6, 8, 10, 12 và 20). Nếu bạn chọn làm như vậy, thì bạn phải luôn trả lại các giải pháp đó khi thích hợp và xử lý các giải pháp sử dụng nhiều loại khuôn. Thí dụ:
>> "7 4 3"
3d6+7