Những gì bạn cần làm là tạo một hàm / chương trình lấy số thập phân làm đầu vào và đưa ra kết quả của việc liên tục lấy đối ứng của phần phân số của số, cho đến khi số đó trở thành số nguyên.
Cụ thể hơn, quy trình như sau:
Đặt x là đầu vào
Nếu x là một số nguyên, xuất nó.
khác: . Quay trở lại 2.
x x - ⌊ x ⌋ ⌊ x ⌋ x là thành phần phân số của và bằng . là sàn của x, là số nguyên lớn nhất nhỏ hơn .
Các trường hợp thử nghiệm:
0 = 0
0.1 = 1/10 -> 10
0.2 = 1/5 -> 5
0.3 = 3/10 -> 10/3 -> 1/3 -> 3
0.4 = 2/5 -> 5/2 -> 1/2 -> 2
0.5 = 1/2 -> 2
0.6 = 3/5 -> 5/3 -> 2/3 -> 3/2 -> 1/2 -> 2
0.7 = 7/10 -> 10/7 -> 3/7 -> 7/3 -> 1/3 -> 3
0.8 = 4/5 -> 5/4 -> 1/4 -> 4
0.9 = 9/10 -> 10/9 -> 1/9 -> 9
1 = 1
3.14 = 157/50 -> 7/50 -> 50/7 -> 1/7 -> 7
6.28 = 157/25 -> 7/25 -> 25/7 -> 4/7 -> 7/4 -> 3/4 -> 4/3 -> 1/3 -> 3
Tóm tắt từ 0 đến 1 với các mức tăng 0,1: 0, 10, 5, 3, 2, 2, 2, 3, 4, 9, 1
Đây là mã golf , vì vậy ít byte nhất sẽ thắng.
Làm rõ:
- "Điểm thưởng" không có lỗi làm tròn
- Nên hoạt động cho bất kỳ số hữu tỷ không âm nào (bỏ qua lỗi làm tròn)
- Bạn có thể, nhưng không phải xuất các bước đã thực hiện
- Bạn có thể lấy đầu vào dưới dạng thập phân, phân số hoặc cặp số có thể ở trong một chuỗi.
Xin lỗi cho tất cả các vấn đề, đây là câu hỏi đầu tiên của tôi trên trang web này.