Die Herausforderung
Für diese Herausforderung müssen Sie feststellen, ob eine bestimmte Nummer im Cantor-Set enthalten ist. Definieren wir zunächst die Cantor-Menge.
Beginnen Sie zunächst mit den Zahlen zwischen 0 und 1. Zahlen außerhalb dieses Bereichs sind nicht im Cantor-Set enthalten. Teilen wir nun die Zahlen in drei gleiche Teile: [0,1 / 3], [1 / 3,2 / 3], [2/3, 1]. Alle Zahlen, die nicht in den Bereichen des ersten und des letzten Parts liegen, sind nicht im Cantor-Set enthalten. Jetzt wiederholen Sie diesen Vorgang für die Segmente [0,1 / 3] und [2/3, 1]. Dann wiederholen Sie, was übrig bleibt. Du machst das immer weiter. Am Ende befinden sich alle verbleibenden Nummern im Cantor-Set. Hier ist ein Diagramm der ersten sechs Iterationen:
Eingang
Zwei Integer x
und y
.
0 < y < 2^15
0 <= x <= y
Der größte gemeinsame Nenner von x
und y
ist 1, es sei denn x == 0
.
Ausgabe
Die Wahrheit ist, wenn sie x/y
im Cantor-Set enthalten ist.
Falsch, wenn x/y
nicht im Cantor-Set.
Beispiele
Sehen wir uns nun einige Beispiele für Zahlen im Cantor-Set an.
1/3 -> true
Es befindet sich an einer Grenze, und Grenzen werden niemals aufgehoben.
1/4 -> true
1/4
befindet sich nie im mittleren Drittel eines Segments, obwohl es sich auch nie an der Grenze befindet. Wenn Sie diesem Pfad folgen, werden Sie feststellen, dass er sich abwechselnd im ersten und letzten Drittel eines Abschnitts befindet.
1/13 -> true
1/13
wechselt zwischen dem ersten, ersten und letzten Abschnitt.
1/5 -> false
1/5
fällt in den ersten leeren Block der dritten Zeile im obigen Diagramm zwischen 1/9 und 2/9.
Andere Testfälle:
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
Sie können mit diesem Snippet auch andere Nummern ausprobieren:
Zielsetzung
Die Person mit den wenigsten Bytes gewinnt.
x == 0