Bài tập
Nhiệm vụ là viết một chương trình đưa ra một số nguyên dương nhất quán nhưng khác tùy ý (vì vậy lớn hơn 0). Đây là cách nắm bắt: khi nguồn được lặp lại lần (mã được nối / nối với chính nó), chương trình sẽ có xác suất xuất ra và xác suất còn lại là xuất ra không thay đổi.
Thí dụ
Giả sử rằng nguồn ban đầu của bạn là XYZ
và tạo ra số nguyên 3
. Sau đó:
Với : nên xuất với xác suất (50% thời gian) và với xác suất cũng vậy (50 % thời gian).
XYZXYZ
Với : nên xuất với xác suất (66,666% thời gian) và với xác suất (33.333% thời gian)
XYZXYZXYZ
Với : nên xuất với xác suất (75% thời gian) và với xác suất (25% của thời gian)
XYZXYZXYZXYZ
và như thế....
Quy tắc
Bạn phải xây dựng một chương trình đầy đủ . Đầu ra phải được in thành STDOUT.
Về mặt lý thuyết, chương trình của bạn sẽ xuất ra từng giá trị có thể với các xác suất đã nêu ở trên, nhưng một sai lệch nhỏ so với điều này do việc triển khai ngẫu nhiên là ổn ( với điều kiện là việc triển khai không phải là một phân phối khác - bạn không thể sử dụng một phân phối khác phân phối bình thường để lưu byte ) .
Chương trình nên (một lần nữa, về lý thuyết) hoạt động với giá trị lớn tùy ý , nhưng các hạn chế kỹ thuật do độ chính xác là tốt đối với lớn .
Đầu ra phải ở cơ sở 10 (đầu ra ở bất kỳ cơ sở nào khác hoặc với ký hiệu khoa học đều bị cấm). Trailing / hàng đầu không gian và số không hàng đầu được cho phép.
Tất nhiên, nguồn ban đầu phải dài ít nhất 1 byte. Bạn không thể giả sử một dòng mới giữa các bản sao của nguồn của bạn. Chương trình không nên lấy đầu vào (hoặc có đầu vào trống, không sử dụng).
Đây là môn đánh gôn , vì vậy điểm của câu trả lời là độ dài của nguồn (gốc) tính bằng byte, với điểm thấp hơn sẽ tốt hơn.
Lưu ý: Thách thức này là một (nhiều) phiên bản khó của một này .