Le défi
Pour ce défi, vous êtes censé déterminer si un nombre donné se trouve dans l'ensemble Cantor. Définissons donc d'abord l'ensemble Cantor.
Commencez d'abord par les nombres compris entre 0 et 1. Tout nombre en dehors de cette plage ne se trouve pas dans l'ensemble Cantor. Maintenant, divisons les nombres en trois parties égales: [0,1 / 3], [1 / 3,2 / 3], [2/3, 1]. Tous les nombres ne se trouvant pas dans les plages des première et dernière parties ne sont pas dans l'ensemble Cantor. Maintenant, vous répétez ce processus pour les segments [0,1 / 3] et [2/3, 1]. Ensuite, vous répétez ce qui reste. Vous continuez à faire ça pour toujours. En fin de compte, tous les numéros qui restent sont dans l'ensemble Cantor. Voici un diagramme des six premières itérations:
Contribution
Deux entiers x
et y
.
0 < y < 2^15
0 <= x <= y
Le plus grand dénominateur commun de x
et y
est 1, sauf x == 0
.
Production
Truthy if x/y
est dans l'ensemble Cantor.
Falsy si x/y
n'est pas dans l'ensemble Cantor.
Exemples
Voyons maintenant quelques exemples de nombres qui se trouvent dans l'ensemble Cantor.
1/3 -> true
Il se trouve sur une frontière et les frontières ne sont jamais supprimées.
1/4 -> true
1/4
n'est jamais dans le tiers médian d'un segment, bien qu'il ne soit jamais sur la frontière non plus. Si vous suivez son chemin, vous constaterez qu'il alterne entre le premier et le dernier tiers d'une section.
1/13 -> true
1/13
alterne entre les première, première et dernière sections.
1/5 -> false
1/5
tombe dans le premier bloc vide de la troisième ligne du diagramme ci-dessus, entre 1/9 et 2/9.
Autres cas de test:
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
Vous pouvez essayer d'autres numéros avec cet extrait:
Objectif
La personne avec le moins d'octets gagne.
x == 0