Tôi vừa gửi câu trả lời cho câu hỏi này , và sau đó xem xét một số câu chuyện tin tức về cơn sốt xổ số MegaMillions đang diễn ra ngay tại Mỹ. Bài báo này cho biết một cá nhân đã mua vé trị giá 20.000 đô la cùng một lúc (đó là 20.000 bộ số để xác nhận!) Để thử và kiểm tra vận may của họ.
Điều đó khiến tôi suy nghĩ về cách người ta có thể nhanh chóng xác định liệu họ có giành được giải thưởng nào không, không chỉ là giải độc đắc, trên rất nhiều vé mà họ đã mua.
Thách thức sau đó là:
Tổng quat:
Viết hàm hoặc chương trình sẽ chấp nhận một chuỗi số làm đối số (STDIN hoặc đọc từ tệp, lựa chọn của bạn) và trả về số lượng vé với ít nhất là khoản thanh toán tối thiểu được trao.
Chi tiết mã:
- Đầu vào sẽ bao gồm một loạt các dòng, một dòng cho mỗi vé được mua. Các số trúng sẽ được tiền tố bằng 0, trong khi các số được rút ra sẽ có tiền tố với số tăng dần bắt đầu từ 1. (xem ví dụ)
- Đầu vào phải là một bộ số hoàn toàn ngẫu nhiên mỗi lần, bao gồm cả số lần rút và số trúng.
- Đầu vào phải chấp nhận bất kỳ số lượng vé n trong đó 1 <= n <= 20.000. (Giả sử không có 0 vé nào chạy.)
- Mỗi dòng đầu vào sẽ có 7 số trên mỗi dòng. Một cho tiền tố được ghi chú ở trên, 5 cho các quả bóng tiêu chuẩn và một cho các quả bóng 'khớp'. (xem chi tiết xổ số bên dưới)
- Đầu vào có thể được phân định bất kỳ cách nào bạn muốn (khoảng trắng, dấu chấm phẩy, v.v.)
- Đầu ra phải là một danh sách của tất cả các trận hòa và số tiền thắng. (Vì vậy, bạn biết cái nào để bật.)
- Danh sách đầu ra nên được sắp xếp theo số tiền thắng. (Ai quan tâm nếu bạn giành được 2 đô la trên một vé nếu bạn cũng giành được 10.000 đô la trên một vé khác ???)
- Khi có nhiều hơn một vé thắng cùng một số tiền, thứ tự của các vé đó là không liên quan.
- Đầu ra cũng sẽ đưa ra một danh sách tổng số tiền giành được.
Chi tiết xổ số:
- Các quy tắc tiêu chuẩn cho trò chơi MegaMillions sẽ được áp dụng, vì hiện tại nó đang rất hấp dẫn.
- Bốc thăm bao gồm sáu số từ hai nhóm số riêng biệt - năm số khác nhau từ 1 đến 56 và một số (bóng khớp) từ 1 đến 46.
- Giải độc đắc được thắng bằng cách khớp tất cả sáu số trúng trong một bản vẽ.
Giải thưởng cho những người không trúng giải độc đắc được trao như sau (xem hình ảnh bên dưới).
(Chính) + (Khớp) = (Xuất chi)
5 + 1 = Jackpot
5 + 0 = $ 250.000
4 + 1 = $ 10.000
4 + 0 = $ 150
3 + 1 = $ 150
3 + 0 = $ 7
2 + 1 = $ 10
1 + 1 = $ 3
0 + 1 = $ 2Giả sử giải độc đắc hiện tại là 1.000.000 đô la (một triệu đồng).
- Giả sử chỉ có một người trúng giải độc đắc, trừ khi lần rút ngẫu nhiên của bạn kéo cùng một giải độc đắc hơn một lần (bạn có gian lận không?) .
- Giả sử không có quy tắc số nhân / California đang chơi.
Chi tiết thử thách:
- Đây là mã golf, vì vậy mã ngắn nhất sẽ thắng.
- Trong trường hợp hòa, tôi sẽ trả lời cao nhất. Tôi biết điều này hơi chủ quan, nhưng điểm chính vẫn là điểm số.
Thí dụ:
Đầu vào:
0 2 4 23 38 46 23
1 17 18 22 23 30 40
2 2 5 24 37 45 23
3 4 23 38 40 50 9
4 2 4 23 38 46 17
5 5 16 32 33 56 46
Đầu ra:
4 - $250,000
3 - $7
2 - $3
Total Winnings: $250,010