Hãy xem xét chuỗi số sau:
Nó liệt kê tất cả các phân số nhị phân trong khoảng đơn vị .
(Để làm cho thử thách này dễ dàng hơn, yếu tố đầu tiên là tùy chọn: Bạn có thể bỏ qua nó và xem xét chuỗi bắt đầu bằng 1/2.)
Bài tập
Viết chương trình (chương trình hoàn chỉnh hoặc chức năng) mà ...
Chọn một trong những hành vi sau:
- Đầu vào n, phần tử thứ n đầu ra của chuỗi (0-index hoặc 1-index);
- Đầu vào n, đầu ra n phần tử đầu tiên của chuỗi;
- Không nhập gì, xuất chuỗi số vô hạn mà bạn có thể lấy từng cái một;
Qui định
- Chương trình của bạn ít nhất phải hỗ trợ 1000 mục đầu tiên;
- Bạn có thể chọn xuất số thập phân hoặc phân số (tích hợp, cặp số nguyên, chuỗi) tùy thích;
- Đầu vào / đầu ra dưới dạng chữ số nhị phân không được phép trong câu hỏi này;
- Đây là mã golf , mã ngắn nhất giành chiến thắng;
- Sơ hở tiêu chuẩn không được phép.
Tủ thử
input output
1 1/2 0.5
2 1/4 0.25
3 3/4 0.75
4 1/8 0.125
10 5/16 0.3125
100 73/128 0.5703125
511 511/512 0.998046875
512 1/1024 0.0009765625
Những ví dụ này dựa trên chuỗi 0 được lập chỉ mục với 0 hàng đầu đi kèm. Bạn sẽ cần phải điều chỉnh đầu vào cho phù hợp với giải pháp của bạn.
Đọc thêm
- OEIS A006257
- Vấn đề Josephus: . (Trước đây là M2216)
- 0, 1, 1, 3, 1, 3, 5, 7, 1, 3, 5, 7, 9, 11, 13, 15, 1, 3, 5, ...
- OEIS A062383
- : cho , hoặc .
- 1, 2, 4, 4, 8, 8, 8, 8, 16, 16, 16, 16, 16, 16, 16, 16, 32, 32, 32, ...
A006257 (n) / A062383 (n) = (0, 0.1, 0.01, 0.11, 0,001, ...) liệt kê tất cả các phân số nhị phân trong khoảng đơn vị [0, 1). - Fredrik Johansson, ngày 14 tháng 8 năm 2006
"1/2" "1/4" "1/8"...
take
n yếu tố từ nó sau này.
int
s, hoặc double
trong một ngôn ngữ / triển khai double
sử dụng định dạng nhị phân IEEE64 ? Tôi hy vọng bạn không có nghĩa là phải phân tích chuỗi ASCII nếu chúng ta muốn lấy một số nguyên? Các kiểu số nguyên bình thường là nhị phân trong các ngôn ngữ như C. Hoặc bạn có nghĩa là đầu vào / đầu ra không thể là một mảng hoặc chuỗi số nguyên hoặc số không ASCII?