Le triangle de Sierpinski est un ensemble de points sur le plan qui est construit en commençant par un seul triangle et en divisant à plusieurs reprises tous les triangles en quatre triangles congruents et en supprimant le triangle central. Le triangle de Sierpinski droit a des coins à (0,0)
, (0,1)
et (1,0)
, et ressemble à ceci:
Certaines définitions équivalentes de cet ensemble sont les suivantes:
Points dans l'
n
itération du processus décrit ci-dessus, pour tousn
.Points
(x,y)
avec0 <= x <= 1
et0 <= y <= 1
tels que pour tous les entiers positifsn
, len
bit e dans l'expansion binaire de x et y ne soit pas les deux1
.Laisser
T = {(0,0),(1,0),(0,1)}
Soit
f
une fonction sur des ensembles de points 2D définis par ce qui suit:f(X) = {(0,0)} ∪ {(x+t)/2 | x∈X, t∈T}
Ensuite, le triangle de Sierpinski droit est la fermeture topologique du point le moins fixe (par confinement défini) de
f
.Soit
S
le carré{(x,y) | 0<=x<=1 and 0<=y<=1}
Soit
g(X) = S ∩ {(x+t)/2 | x∈(X), t∈T}
(oùT
est tel que défini ci-dessus)Ensuite, le triangle de Sierpinski droit est le plus grand point fixe de
g
.
Défi
Écrivez un programme ou une fonction qui accepte 4 entiers, a,b,c,d
et donne une valeur vraie si elle (a/b,c/d)
appartient au triangle de Sierpinski droit, et sinon donne une valeur de falsey.
Notation
Ceci est un golf de code. Le code le plus court en octets gagne.
Cas de test
Les éléments suivants sont dans le triangle de Sierpinski droit:
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
Les éléments suivants ne sont pas dans le triangle de Sierpinski droit:
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
une entrée valide?