Các thách thức
Đối với thử thách này, bạn phải xác định xem một số đã cho có nằm trong tập hợp Cantor hay không. Vì vậy, trước tiên, hãy xác định bộ Cantor.
Đầu tiên, bắt đầu với các số từ 0 đến 1. Bất kỳ số nào nằm ngoài phạm vi này không nằm trong tập hợp Cantor. Bây giờ, hãy chia các số thành ba phần bằng nhau: [0,1 / 3], [1 / 3,2 / 3], [2/3, 1]. Bất kỳ số nào không nằm trong phạm vi của phần đầu tiên và phần cuối không nằm trong tập hợp Cantor. Bây giờ, bạn lặp lại quy trình này cho các phân đoạn [0,1 / 3] và [2/3, 1]. Sau đó, bạn lặp lại về những gì còn sót lại. Bạn cứ làm điều này mãi mãi. Cuối cùng, tất cả các số còn lại đều nằm trong tập hợp Cantor. Đây là sơ đồ của sáu lần lặp đầu tiên:
Đầu vào
Hai số nguyên x
và y
.
0 < y < 2^15
0 <= x <= y
Mẫu số chung lớn nhất của x
và y
là 1, trừ khi x == 0
.
Đầu ra
Sự thật nếu x/y
là trong bộ Cantor.
Falsy nếu x/y
không có trong bộ Cantor.
Ví dụ
Bây giờ, hãy xem một số ví dụ về các số trong tập hợp Cantor.
1/3 -> true
Đó là trên một ranh giới, và ranh giới không bao giờ được gỡ bỏ.
1/4 -> true
1/4
không bao giờ nằm ở một phần ba giữa của một phân khúc, mặc dù nó cũng không bao giờ nằm trên ranh giới. Nếu bạn đi theo con đường của nó, bạn thực sự sẽ thấy rằng nó xen kẽ giữa việc ở một phần ba đầu tiên và cuối cùng của một phần.
1/13 -> true
1/13
xen kẽ giữa các phần đầu tiên, đầu tiên và cuối cùng.
1/5 -> false
1/5
rơi vào khối trống đầu tiên của hàng thứ ba trong sơ đồ trên, giữa 1/9 và 2/9.
Các trường hợp thử nghiệm khác:
0/4 -> true
3/10 -> true
3/4 -> true
10/13 -> true
1/1 -> true
12/19 -> false
5/17 -> false
3/5 -> false
1/7 -> false
1/2 -> false
Bạn có thể thử các số khác với đoạn trích này:
Mục tiêu
Người có ít byte nhất sẽ thắng.
x == 0