Das Sierpinski-Dreieck ist eine Reihe von Punkten in der Ebene, die konstruiert werden, indem mit einem einzelnen Dreieck begonnen wird und alle Dreiecke wiederholt in vier kongruente Dreiecke aufgeteilt und das mittlere Dreieck entfernt werden. Das rechte Sierpinski Dreieck hat Ecken an (0,0)
, (0,1)
und (1,0)
, und sieht wie folgt aus :
Einige äquivalente Definitionen dieses Satzes lauten wie folgt:
Punkte in der
n
Iteration des oben beschriebenen Prozesses für allen
.Punkte
(x,y)
mit0 <= x <= 1
und0 <= y <= 1
so, dass für alle positiven ganzen Zahlenn
dasn
th-Bit in der binären Erweiterung von x und y nicht beide sind1
.Lassen
T = {(0,0),(1,0),(0,1)}
Sei
f
eine Funktion für Sätze von 2D-Punkten, die durch Folgendes definiert sind:f(X) = {(0,0)} ∪ {(x+t)/2 | x∈X, t∈T}
Dann ist das rechte Sierpinski-Dreieck der topologische Verschluss des am wenigsten festen Punktes (durch Mengeneinschluss) von
f
.Sei
S
das Quadrat{(x,y) | 0<=x<=1 and 0<=y<=1}
Lassen Sie
g(X) = S ∩ {(x+t)/2 | x∈(X), t∈T}
(woT
ist wie oben definiert)Dann ist das rechte Sierpinski-Dreieck der größte Fixpunkt von
g
.
Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die 4 Ganzzahlen akzeptiert a,b,c,d
und einen wahrheitsgemäßen Wert angibt, wenn (a/b,c/d)
er zum rechten Sierpinski-Dreieck gehört, und ansonsten einen falschen Wert.
Wertung
Dies ist ein Code Golf. Der kürzeste Code in Bytes gewinnt.
Testfälle
Folgendes befindet sich im rechten Sierpinski-Dreieck:
0 1 0 1
0 1 12345 123456
27 100 73 100
1 7 2 7
8 9 2 21
8 15 20 63
-1 -7 2 7
Folgendes befindet sich nicht im rechten Sierpinski-Dreieck:
1 1 1 1
-1 100 1 3
1 3 1 3
1 23 1 7
4 63 3 66
58 217 4351 7577
-1 -7 3 7
-1 -3 1 1
eine gültige Eingabe?