O triângulo de Sierpinski é um conjunto de pontos no plano que é construído começando com um único triângulo e dividindo repetidamente todos os triângulos em quatro triângulos congruentes e removendo o triângulo central. O triângulo direito de Sierpinski tem cantos em (0,0), (0,1)e (1,0), e fica assim:

Algumas definições equivalentes deste conjunto são as seguintes:
Pontos na
niteração do processo descrito acima, para todosn.Pontos
(x,y)com0 <= x <= 1e0 <= y <= 1tais que, para todos os números inteiros positivosn, onth bit na expansão binária de x e y não são ambos1.Deixei
T = {(0,0),(1,0),(0,1)}Seja
fuma função em conjuntos de pontos 2D definidos pelo seguinte:f(X) = {(0,0)} ∪ {(x+t)/2 | x∈X, t∈T}Então, o triângulo de Sierpinski à direita é o fechamento topológico do ponto menos fixo (por contenção definida) de
f.Seja
So quadrado{(x,y) | 0<=x<=1 and 0<=y<=1}Let
g(X) = S ∩ {(x+t)/2 | x∈(X), t∈T}(ondeTé como definido acima)Então o triângulo direito de Sierpinski é o maior ponto fixo de
g.
Desafio
Escreva um programa ou função que aceite 4 números inteiros a,b,c,de dê um valor verdadeiro se (a/b,c/d)pertencer ao triângulo de Sierpinski à direita e, caso contrário, dê um valor de falsey.
Pontuação
Este é um código de golfe. O menor código em bytes vence.
Casos de teste
A seguir, estão no triângulo direito de Sierpinski:
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
O seguinte não está no triângulo direito de Sierpinski:
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 1uma entrada válida?