Tổng quat
Trong thử thách này, nhiệm vụ của bạn là tạo ngẫu nhiên một hàm toán học đơn điệu giữa hai bộ.
Đầu vào
Đầu vào của bạn là hai số nguyên dương s
và n
.
Sau khi nhận được các đầu vào này, chương trình của bạn sẽ tạo ra một hàm toán học ngẫu nhiênf
từ tập hợp thành . Nói cách khác, là một "quy tắc" mà mất trong một -tuple các số nguyên giữa và , và trả về một số nguyên như vậy. Ngoài ra, nên đơn điệu theo nghĩa sau. Nếu và là hai -upuples giữ cho mọi tọa độ , thì .{0,1,...,s-1}n
{0,1,...,s-1}
f
n
0
s-1
f
A
B
n
A[i] ≥ B[i]
i
f(A) ≥ f(B)
Phân phối chính xác của các hàm đơn điệu f
không thành vấn đề, miễn là mỗi hàm như vậy có xác suất dương được tạo ra (giả sử RNG hoàn hảo).
Đầu ra
Đầu ra của bạn sẽ là một bảng liệt kê các đầu vào và đầu ra của f
. Nó sẽ chứa tất cả n
các số nguyên giữa 0
và s-1
theo một số thứ tự, mỗi số được theo sau bởi đầu ra tương ứng của f
. Các định dạng đầu ra chính xác là linh hoạt (trong lý do).
Ví dụ
Các đầu vào s = 3
và n = 2
có thể tạo ra đầu ra
(0, 0) 0
(0, 1) 1
(0, 2) 2
(1, 0) 0
(1, 1) 1
(1, 2) 2
(2, 0) 1
(2, 1) 1
(2, 2) 2
Nó chứa tất cả các cặp trên tập hợp {0, 1, 2}
chính xác một lần và mỗi cặp được theo sau bởi giá f
trị của nó . Điều kiện đơn điệu cũng được thỏa mãn. Các bộ dữ liệu được đưa ra ở đây theo thứ tự từ điển, nhưng điều này là không cần thiết.
Một ví dụ khác, s = 2
và n = 4
có thể sản xuất
(0, 0, 0, 0) 0
(0, 0, 0, 1) 0
(0, 0, 1, 0) 0
(0, 0, 1, 1) 0
(0, 1, 0, 0) 1
(0, 1, 0, 1) 1
(0, 1, 1, 0) 1
(0, 1, 1, 1) 1
(1, 0, 0, 0) 0
(1, 0, 0, 1) 1
(1, 0, 1, 0) 0
(1, 0, 1, 1) 1
(1, 1, 0, 0) 1
(1, 1, 0, 1) 1
(1, 1, 1, 0) 1
(1, 1, 1, 1) 1
Sau đây là tất cả các kết quả đầu ra có thể cho s = 2
và n = 2
(sắp xếp lại các bộ dữ liệu); chương trình của bạn sẽ xuất ngẫu nhiên một trong số chúng:
(0,0) 0
(0,1) 0
(1,0) 0
(1,1) 0
-------
(0,0) 0
(0,1) 0
(1,0) 0
(1,1) 1
-------
(0,0) 0
(0,1) 0
(1,0) 1
(1,1) 1
-------
(0,0) 0
(0,1) 1
(1,0) 0
(1,1) 1
-------
(0,0) 0
(0,1) 1
(1,0) 1
(1,1) 1
-------
(0,0) 1
(0,1) 1
(1,0) 1
(1,1) 1
Quy tắc và chấm điểm
Bạn có thể viết một chương trình đầy đủ hoặc một chức năng. Số byte thấp nhất sẽ thắng và các sơ hở tiêu chuẩn không được phép. Mã với lời giải thích được ưa thích.
Không có giới hạn về độ phức tạp thời gian, nhưng tôi sẽ cho tiền thưởng -15% nếu giải pháp của bạn luôn được đảm bảo hoàn thành trong một khoảng thời gian nhất định (tùy thuộc vào đầu vào và giả sử RNG hoàn hảo chạy trong thời gian không đổi) .