Il triangolo Sierpinski è un insieme di punti sul piano che viene costruito partendo da un singolo triangolo e dividendo ripetutamente tutti i triangoli in quattro triangoli congruenti e rimuovendo il triangolo centrale. Il triangolo di Sierpinski destra ha angoli a (0,0)
, (0,1)
e (1,0)
, e si presenta così:
Alcune definizioni equivalenti di questo set sono le seguenti:
Punti nella
n
iterazione del processo sopra descritto, per tuttin
.Punti
(x,y)
con0 <= x <= 1
e0 <= y <= 1
tali che per tutti i numeri interi positivin
, iln
bit th nell'espansione binaria di xey non sono entrambi1
.Permettere
T = {(0,0),(1,0),(0,1)}
Sia
f
una funzione su insiemi di punti 2D definiti da quanto segue:f(X) = {(0,0)} ∪ {(x+t)/2 | x∈X, t∈T}
Quindi il triangolo Sierpinski destro è la chiusura topologica del punto meno fisso (per set contenimento) di
f
.Lascia che
S
sia il quadrato{(x,y) | 0<=x<=1 and 0<=y<=1}
Let
g(X) = S ∩ {(x+t)/2 | x∈(X), t∈T}
(doveT
è come sopra definito)Quindi il triangolo Sierpinski destro è il più grande punto fisso di
g
.
Sfida
Scrivi un programma o una funzione che accetta 4 numeri interi a,b,c,d
e fornisce un valore di verità se (a/b,c/d)
appartiene al triangolo Sierpinski destro, e in caso contrario fornisce un valore di falsa.
punteggio
Questo è un codice golf. Vince il codice più breve in byte.
Casi test
I seguenti sono nel triangolo Sierpinski destro:
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
Quanto segue non è nel triangolo Sierpinski giusto:
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
un input valido?