Meydan okuma
Bu zorluk için, verilen bir sayının Cantor setinde olup olmadığını belirlemeniz gerekir. Önce Cantor setini tanımlayalım.
İlk olarak, 0 ile 1 arasındaki sayılarla başlayın. Bu aralığın dışındaki sayılar Cantor kümesinde değildir. Şimdi sayıları üç eşit parçaya bölelim: [0,1 / 3], [1 / 3,2 / 3], [2/3, 1]. İlk ve son parça aralıklarında olmayan sayılar Cantor setinde değildir. Şimdi bu işlemi [0,1 / 3] ve [2/3, 1] segmentleri için tekrar edersiniz. Sonra artık ne olduğunu tekrarlayın. Bunu sonsuza dek yapmaya devam ediyorsun. Sonunda, kalan tüm sayılar Cantor kümesinde bulunur. İlk altı iterasyonun bir şeması:
Giriş
İki tamsayı x
ve y
.
0 < y < 2^15
0 <= x <= y
En büyük ortak paydası x
ve y
sürece 1'dir x == 0
.
Çıktı
x/y
Cantor setindeyse doğrudur . Cantor setinde değilse
Falsy x/y
.
Örnekler
Şimdi, Cantor setindeki sayıların bazı örneklerine bakalım.
1/3 -> true
Bu bir sınır üzerindedir ve sınırlar asla kaldırılmaz.
1/4 -> true
1/4
hiçbir zaman bir segmentin orta üçte birinde değildir, ancak hiçbir zaman sınırda değildir. Onun yolunu izlerseniz, aslında bir bölümün ilk ve son üçte birinde olmak arasında değiştiğini göreceksiniz.
1/13 -> true
1/13
ilk, ilk ve son bölümler arasında geçiş yapar.
1/5 -> false
1/5
1/9 ve 2/9 arasında, yukarıdaki diyagramda üçüncü sıranın ilk boş bloğuna düşer.
Diğer test örnekleri:
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
Bu snippet ile diğer numaraları deneyebilirsiniz:
Amaç
En az bayt olan kişi kazanır.
x == 0